我正在阅读文档StringBuffer,特别是reverse()方法.该文件提到了代理人对的一些内容.在这种情况下,什么是代理对?什么是低和高代理人?
我正在寻找一种方法来查找两个字符串是否是彼此的字谜.
Ex: string1 - abcde
string2 - abced
Ans = true
Ex: string1 - abcde
string2 - abcfed
Ans = false
Run Code Online (Sandbox Code Playgroud)
我提出的解决方案是为了对两个字符串进行排序并比较两个字符串中的每个字符直到任一字符串的结尾.它将是O(logn).我正在寻找一些其他有效的方法,它不会改变比较2个字符串
我在java Netbeans中编写以下代码,这对于普通的字谜非常有用.但是如果两个文本字段包含包含重复字母的单词,则代码无法正常工作.可能是什么问题,我该如何解决?我对Java很基础,还不能理解Arrays.
String s1= t1.getText();
String s2= t2.getText();
int b=0,c=0;
if(s1.length()!=s2.length())
System.out.print("No");
else {
for(int i=0;i<s1.length();i++) {
char s = s1.charAt(i);
for(int j=0;j<s2.length();j++) {
if(s==s2.charAt(j)){
b++;
}
}
if(b==0)
break;
}
if(b==0)
System.out.print("No");
else
System.out.print("YES");
}
System.out.print(b);
Run Code Online (Sandbox Code Playgroud) 我最近有一个面试问题,我必须编写一个接受两个字符串的函数,1如果它们是彼此的字谜,它将返回,否则返回0。为简化起见,两个字符串的长度相同,非空,并且仅包含小写字母和数字字符。
我实现了一个函数,该函数独立地累加每个字符串的每个字符的 XOR 值,然后比较每个字符串的最终 XOR 值以查看它们是否相等。如果是,我会返回1,否则返回0。
我的功能:
int isAnagram(char* str1, char* str2){
int xor_acc_1 = 0;
int xor_acc_2 = 0;
for(int i = 0; i<strlen(str1); i++){
xor_acc_1 ^= str1[i] - '0';
xor_acc_2 ^= str2[i] - '0';
}
return xor_acc_1 == xor_acc_2;
}
Run Code Online (Sandbox Code Playgroud)
除了一个测试用例,我的函数适用于每个用例。
char* str1 = "123";
char* str2 = "303";
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,尽管这两个字符串不是彼此的字谜,但它们都48作为 XOR 值返回。
我的问题是:通过修改 XOR 背后的数学,可以在线性时间内使用 XOR 解决这个问题,而不使用数据结构(例如 Map)?