f*********d 发帖数: 140 | 1 给一个string array, 除了一个string出现奇数次外,其他的所有string都出现了偶数
次。返回出现奇数次的string |
c**1 发帖数: 71 | 2 xor. odd occurrences will stay and even occurrences cancel each other |
f*********d 发帖数: 140 | 3 that's for unsigned int, how to do that with string?
【在 c**1 的大作中提到】 : xor. odd occurrences will stay and even occurrences cancel each other
|
f*********d 发帖数: 140 | 4 OK, the same, my bad
【在 c**1 的大作中提到】 : xor. odd occurrences will stay and even occurrences cancel each other
|
u*****o 发帖数: 1224 | 5 LZ,你这个问一道题系列一共多少题啊。。。现在已经出了8了。。 |
s*******n 发帖数: 305 | |
s*******n 发帖数: 305 | 7
我有点糊涂了, String 能 XOR 吗? JAVA肯定不行
【在 f*********d 的大作中提到】 : OK, the same, my bad
|
u*****o 发帖数: 1224 | 8 我也奇怪啊,string可以XOR吗? 期待LZ回来解答。
【在 s*******n 的大作中提到】 : : 我有点糊涂了, String 能 XOR 吗? JAVA肯定不行
|
r*********n 发帖数: 4553 | 9 如果是不同长度的string,可以在后面加零补齐
然后
char* arr = &str[0];
int sz = str.size();
把string看成是char array,然后逐一xor |
z***y 发帖数: 50 | 10 不知道 "abc " 和 "abc" 算不算同一个string ? |
|
|
u*****o 发帖数: 1224 | 11 好办法啊,谢谢!
【在 r*********n 的大作中提到】 : 如果是不同长度的string,可以在后面加零补齐 : 然后 : char* arr = &str[0]; : int sz = str.size(); : 把string看成是char array,然后逐一xor
|
s*******n 发帖数: 305 | 12
那也就说有N个Strings, 最长String的长度为K, 时间复杂度O(KN), 空间复杂度O
(KN)
【在 u*****o 的大作中提到】 : 好办法啊,谢谢!
|
s*******n 发帖数: 305 | 13
不算吧, 一个是 ' ', 另一个是'', ASCII码没有后面的。
【在 z***y 的大作中提到】 : 不知道 "abc " 和 "abc" 算不算同一个string ?
|
r*******e 发帖数: 7583 | 14 空间复杂度是O(K),不需要存中间结果
O
【在 s*******n 的大作中提到】 : : 不算吧, 一个是 ' ', 另一个是'', ASCII码没有后面的。
|
u*****o 发帖数: 1224 | 15 不太明白,不存中间结果最后怎么可以很爽的刷刷清零呢?
product = 0;
for (i=0;i
product ^= a[i] (suppose a[i] = product of k characters in the string.)
product不是应该一路积累下来咩。。。
【在 r*******e 的大作中提到】 : 空间复杂度是O(K),不需要存中间结果 : : O
|
z***y 发帖数: 50 | 16 如果他们不算一样的, 那用Xor的办法就有问题了.
比如"aaaaa" "aa "出现了两次但"aa"出现了一次,
Xor完后结果是"aa ",
我们怎么知道是"aa "还是"aa"呢?
可以所有string后加点东西最后再去掉...
【在 s*******n 的大作中提到】 : : 不算吧, 一个是 ' ', 另一个是'', ASCII码没有后面的。
|
f*********d 发帖数: 140 | 17 1字符串的长度是可以提前知道的~ 所以字符串是否结尾也是知道的~
2space也是一个字符
3没有字符了就不xor它
【在 z***y 的大作中提到】 : 如果他们不算一样的, 那用Xor的办法就有问题了. : 比如"aaaaa" "aa "出现了两次但"aa"出现了一次, : Xor完后结果是"aa ", : 我们怎么知道是"aa "还是"aa"呢? : 可以所有string后加点东西最后再去掉...
|
a******e 发帖数: 710 | 18 按字符xor吧。
所有string的第一个字符xor, 最后结果就是只出现一次的string的第一个字符。
【在 z***y 的大作中提到】 : 如果他们不算一样的, 那用Xor的办法就有问题了. : 比如"aaaaa" "aa "出现了两次但"aa"出现了一次, : Xor完后结果是"aa ", : 我们怎么知道是"aa "还是"aa"呢? : 可以所有string后加点东西最后再去掉...
|
c*****n 发帖数: 83 | 19 可以用 set 来代替 XOR 的操作:
initialize an empty set;
scan every string,if it's NOT in the set, put it into the set; otherwise,
delete it from the set.
The remaining element is that string we want to find. |