9.1数组与字符串(二)——两个字符串的中一个重新排列后,能否变成另一个字符串

/**
 * 功能:给定两个字符串,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
 */
两种方法:
1、首先对字符串排序,然后比较是否相同(最优)
       //首先对字符串排序,然后比较
       public static boolean permutation(String str1 ,String str2 ){
             if ( str1 .length()!= str2 .length())
                   return false ;
             return sort( str1 ).equals(sort( str2 ));
      }
       public static String sort(String s ){
             char [] array = s .toCharArray();
            Arrays. sort( array );
             return new String( array );
      }
      
      
2、 索引值i对应的标记指示该字符出现的频率,比较两个字符串的每个字符出现的频率和出现的个数      
       //索引值i对应的标记指示该字符出现的频率,比较两个字符串的每个字符出现的频率和字符出现的个数
       public static boolean isSame(String str1 ,String str2 ){
             if ( str1 .length()!= str2 .length())
                   return false ;
             int [] val1 = new int [256];
             int [] val2 = new int [256];
             val1 = getVal( str1 );
             val2 = getVal( str2 );

             for ( int i =0; i <256; i ++){
                   if ( val1 [ i ]!= val2 [ i ]){
                         return false ;
                  }
            }
             return true ;
      }
      
       public static int [] getVal(String str ){
             int [] val = new int [256];
             for ( int i =0; i < str .length(); i ++){
                   int value = str .charAt( i );
                   val [ value ]++;
            }
             return val ;
      }
}

你可能感兴趣的:(java,字符串)