我試圖解決problem 22 from Project Euler,用下面的代碼:奇怪溢出 - Objective-C的
NSArray *alphabet = [NSArray arrayWithObjects:@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z",nil];
NSError *error = nil;
NSString *file = [[NSBundle mainBundle] pathForResource:@"names" ofType:@"txt"];
NSString *names = [[NSString alloc] initWithContentsOfFile: file
encoding: NSASCIIStringEncoding
error: &error];
if (names == nil) {
[NSException raise:@"Error reading file :" format:@"%@",error];
}
NSMutableArray *namesArray = [NSMutableArray arrayWithArray:[names componentsSeparatedByString:@","]];
unsigned long long int sum = 0;
unsigned long long int partSum = 0;
for (NSString *str in namesArray){
partSum = 0;
for (int i = 0; i < [str length]; i++) {
partSum += [alphabet indexOfObject:[NSString stringWithFormat:@"%c",[str characterAtIndex:i]]]+1;
NSLog(@"%lli",partSum);
}
NSLog(@"%@ - %lli",str,partSum);
sum += [namesArray indexOfObject:str]*partSum;
}
NSLog(@"%lli",sum);
沒有關於獲取名稱爲數組,但問題,當我登錄了sum
和partSum
變量我得到奇怪的值,如-9223372036854775755
。據我所知,這是由於溢出,但是當程序計算的實例名稱看,我得到以下的輸出:
-9223372036854775808
-9223372036854775805
-9223372036854775790
-9223372036854775778
-9223372036854775769
-9223372036854775755
53
"COLIN" - 53
第一值然淚下,但最後的結果是奇怪的是正確的(不是所有名字的情況)。爲什麼這樣的溢出?這些數字應該只是3,18,30,39,53。猜測應該是該程序還會處理"
字符,並在alphabet
中尋找索引。爲此,我在網上看了很多,找不到如何從字符串中刪除它們。我不能只使用[str stringByReplacingOccurrencesOfString:@""" withString:@""]
。有什麼建議麼?
謝謝您的回答,但處理它,但不刪除'「單曲。 – user2331955 2013-05-05 00:26:18