两个字符串,一个字符串是另一个字符串重排后,且添加了一个字符得到的一个字符串,需要找到这个被添加的字符串。
代码:
// 先对两个字符串进行排序
void quikSort(char *s, int start, int end) {
if (start < end) {
int left = start, right = end;
char tmp = s[start];
while (left < right) {
while (left < right && s[right] >= tmp) right--;
if (left < right) {
s[left] = s[right];
left++;
}
while (left < right && s[left] < tmp) left++;
if (left < right) {
s[right] = s[left];
right--;
}
}
s[right] = tmp;
quikSort(s, start, right - 1);
quikSort(s, right + 1, end);
}
}
char findTheDifference(char * s, char * t){
quikSort(s, 0, strlen(s) - 1);
quikSort(t, 0, strlen(t) - 1);
for (int i = 0; i <strlen(t); i++) {
if (i >= strlen(s)) return t[i];
else if (s[i] != t[i]) return t[i];
}
return 0;
}
先将两个字符串进行排序,逐个比较两个字符串,如果不相同就返回这个字符,如果原始字符已经遍历完,新字符串的最后一个字符就是被添加的字符。
结果