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");
}
一种思路
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");
}
一种思路
解决方案 »
- 请教,为什么jar运行不出来?
- 高手快快帮帮忙!
- JTable 表格中的数据如何保存到数据库中,各位大侠希望你们能帮助我!急呀!!!
- 急问java调用exe文件问题~~~~
- 请教如何安装用友eHR系统
- sf
- java.lang.NoSuchMethodError: 错误郁闷好几天了,不知道怎么解决!会帮帮我吧!
- ?那位大虾有jdbc2.0连接sqlserver的例子,不要使用jdbc-odbc桥,要用sqlserver2000jdbc驱动!大哥帮我一下吧!
- java1.3不支持中文输出,,??
- 谁能告诉我Weblogic6.0为何不能运行?在此先行谢过!!
- BufferedReader.readline怎样忽略""括起来的字符串中含有换行.
- 短信猫在startService这不执行了,也没报错
不错的一种思路.
不过,255,只能计算到ASCII码。
两个数组的比较怎么办?用Arrays.equals()吗?
{
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;
}
如果字符串中还有其它字符.用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为字符串的长度。
比如:同为O(n*log(n))级别的排序算法有:快排,堆排,归并。但快排的效率一般的情况下高于另外的两种。
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);
}
}
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);
}
}
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);
}
}
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);
}
}
Arrays.sort();
equals();
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);
}
memset(tab, 0, 256*sizeof(unsigned long));
for (int i = 0; i < nStackSize; i++) //统计数量
tab[pStack[i]]++; return tab[cb];