int i=0,j=0,k; 
boolean same = false; 
String a = new String("aaab"); 
String b = new String("baaa"); 
for(k=(int)'a';k<=(int)'z';k++)

i=0; 
while(i<a.length)
{
if((int)a[i] == k)
{
i++; 
}
}
j=0; 
while(j<b.length)
{
if((int)b[j] == k)
{
j++; 
}
}
if(i == j)
{
same =true; 
break; 
}
}

if(same)
{
System.out.println("same"); 
}
一种思路

解决方案 »

  1.   


    不错的一种思路.
    不过,255,只能计算到ASCII码。
    两个数组的比较怎么办?用Arrays.equals()吗?
      

  2.   

    各位大大请指正! public static void main(String[] args)
    {
    String s1 = "bbb";
    String s2 = "aba";
    if (f(s1).equals(f(s2)))
    {
    System.out.println("相等");
    }
    else
    {
    System.out.println("不相等");
    }
    }

    static Map f(String s)
    {
    Map m = new HashMap();
    char c;
    int con;
    for (int i = 0; i < s.length(); i++)
    {
    c = s.charAt(i);
    con = null == m.get(s) ? 0 : (Integer)m.get(s);
    m.put(s.charAt(i), con + 1);
    }
    return m;
    }
      

  3.   

    LZ的要求如果纯是英文字母还好搞一些, 要支持Unicode吗?比如是"我不爱?"要等于"不爱我?"
      

  4.   

    LZ的要求如果纯是英文字母还好搞一些, 要支持Unicode吗?比如是"我不爱?"要等于"不爱我?"
      

  5.   

    如果只有ASCII码,一楼的算法应该是最高效的.
    如果字符串中还有其它字符.用HashMap来统计字符的重复次数,效率应该不错.HashMap查找一个元素并统计的时间复杂度为O(1).用HashMap来统计,这样的算法论坛中多次曾多次出现。
    从字符串中取出第i个字符用indexOf(i),时间复杂应该为O(1);设两个HashMap<Charactor,Integer>,key为字符,value为重复次数,就可以了。下来比较两个HashMap。
    如果两个HashMap的size()不相同,两个字符串不同,算法结束。
    否则,把一个HashMap中的每key和value取出,在另一个HashMap中查找,并比较两者的value值就可以了。综合起来,用HashMap来实现,时间复杂度为O(n)。n为字符串的长度。
      

  6.   

    相同级别的算法之间,效率也是有差别的。
    比如:同为O(n*log(n))级别的排序算法有:快排,堆排,归并。但快排的效率一般的情况下高于另外的两种。
      

  7.   

    public static boolean isStringsEquals(String s1, String s2) {
    char[] arr1 = s1.toCharArray();
    char[] arr2 = s1.toCharArray();
    Arrays.sort(arr1);
    Arrays.sort(arr2);
    return Arrays.equals(arr1, arr2);
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
    String s1 = "aaab";
    String s2 = "abaa";

    if (isStringsEquals(s1, s2)) {
    System.out.println(s1 + " = " + s2);
    }
    else {
    System.out.println(s1 + " != " + s2);
    }
    }
      

  8.   

    如果用N个素数的乘积怎么样?也就是从a-z每个用一个素数来取代,这样乘积相同的话就可以了,这样的话也是O(N),不过应该要更有效率一点
      

  9.   

    如果用N个素数的乘积怎么样?也就是从a-z每个用一个素数来取代,这样乘积相同的话就可以了,这样的话也是O(N),不过应该要更有效率一点
      

  10.   

    只有ascii码的情况public class TestStringEqual { public static void main(String[] args) {


    System.out.println( isEqual( "bcbb", "cbbb" ) );


    }

    public static boolean isEqual( String a, String b )
    {
    if( a.length() != b.length() )
    return false; 

    int[] aChances = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  }; int[] bChances = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  };


    char []aChars = a.toCharArray();

    char []bChars = b.toCharArray();

    for( int i = 0; i < aChars.length; i++ )
    {
    aChances[aChars[i]-'a']++;
    bChances[bChars[i]-'a']++;
    }

    return Arrays.equals(aChances, bChances);
    }

    }
      

  11.   

    只有ascii码的情况public class TestStringEqual { public static void main(String[] args) {


    System.out.println( isEqual( "bcbb", "cbbb" ) );


    }

    public static boolean isEqual( String a, String b )
    {
    if( a.length() != b.length() )
    return false; 

    int[] aChances = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  }; int[] bChances = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  };


    char []aChars = a.toCharArray();

    char []bChars = b.toCharArray();

    for( int i = 0; i < aChars.length; i++ )
    {
    aChances[aChars[i]-'a']++;
    bChances[bChars[i]-'a']++;
    }

    return Arrays.equals(aChances, bChances);
    }

    }
      

  12.   

    只有ascii码的情况public class TestStringEqual { public static void main(String[] args) {


    System.out.println( isEqual( "bcbb", "cbbb" ) );


    }

    public static boolean isEqual( String a, String b )
    {
    if( a.length() != b.length() )
    return false; 

    int[] aChances = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  }; int[] bChances = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  };


    char []aChars = a.toCharArray();

    char []bChars = b.toCharArray();

    for( int i = 0; i < aChars.length; i++ )
    {
    aChances[aChars[i]-'a']++;
    bChances[bChars[i]-'a']++;
    }

    return Arrays.equals(aChances, bChances);
    }

    }
      

  13.   

    String.toCharArray();
    Arrays.sort();
    equals();
      

  14.   

    String a = "我不爱?";
    String b = "不爱我?";

    char [] one = a.toCharArray();
    char [] tow = b.toCharArray();

        Arrays.sort(one);
        Arrays.sort(tow);
        
        if (String.valueOf(one).equals(String.valueOf(tow))) {
    System.out.println(true);
    }else {
    System.out.println(false);
    }
      

  15.   

    unsigned long tab[256];
    memset(tab, 0, 256*sizeof(unsigned long));
    for (int i = 0; i < nStackSize; i++) //统计数量
    tab[pStack[i]]++; return tab[cb];
      

  16.   

    原样复制到myeclipse调试不成功!