日期:2014-05-20  浏览次数:20754 次

一个题目。。
给定两个字符串如果字符串中的字符出现的次数相同,则认为两字符串相等。
如“aab”和“aba”相等。
如何高效的实现。

------解决方案--------------------
最起码要遍历这两个字符串吧,O(n),这一步骤可以声明两个长度为255的数组,盛放这些字母的出现次数,然后看一下这两个数组的内容。想不起来更高效的了。
------解决方案--------------------
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"); 
}
一种思路
------解决方案--------------------
探讨
最起码要遍历这两个字符串吧,O(n),这一步骤可以声明两个长度为255的数组,盛放这些字母的出现次数,然后看一下这两个数组的内容。想不起来更高效的了。

------解决方案--------------------
字符串是有一个个字符拼起来的!既然如此我们一样可以把他们拆成一个个字符!
去对比这一个个字符不就可以啦!~具体实现还是LZ自己去做吧……
------解决方案--------------------
期待解决。
------解决方案--------------------
最简单的思路就是,将两个字符串排序,然后进行比较。
------解决方案--------------------
高效的实现还真不知道


帮顶吧
------解决方案--------------------
拆串前先判断两个字符串是否长度一样
------解决方案--------------------
我也感觉先判断长度,如果长度不等就就不相等了,如果长度相等了在分别计算其个数,这样的情况下对于长度不等的情况下是高效的,但是对于真的相等就不行了!
------解决方案--------------------
学习中,等高手解决问题
------解决方案--------------------
比较字符串长度。挺好。
------解决方案--------------------
各位大大请指正!
Java code

    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;
    }

------解决方案--------------------
探讨
给定两个字符串如果字符串中的字符出现的次数相同,则认为两字符串相等。
如“aab”和“aba”相等。
如何高效的实现。

------解决方案--------------------
LZ的要求如果纯是英文字母还好搞一些, 要支持Unicode吗?比如是"我不爱?"要等于"不爱我?"
------解决方案--------------------
学习了~~
------解决方案--------------------
正则可以啊
------解决方案--------------------
如果只有ASCII码,一楼的算法应该是最高效的.
如果字符串中还有其它字符.用HashMap来统计字符的重复次数,效率应该不错.HashMap查找一个元素并统计的时间复杂度为O(1).用HashMap来统计,这样的算法论坛中多次曾多次出现。