-1

我正在使用以下技术来查找数学字符串中的运算符数量。

for (int index = 0; index < [self.evaluateString length]; index++) {
    unichar chars = [self.evaluateString characterAtIndex:index];
    if (chars == '+' || chars == '-' || chars == '*' || chars == '/' ||chars == '^') {
        self.operatorCount++;
    }
}

我的教练说这种方法不是很好。我想知道有没有更好/更优雅的方法来做到这一点。谢谢。

4

2 回答 2

0

似乎要评估字符串。该评估的一部分是解析。在这个过程中,数学运算符被识别并且可以被计数。

与简单字符计数相比的优势在于将3 - 1(运算符)与-1(负数文字)区分开来。

于 2016-01-27T07:27:53.210 回答
-1

你可以做这样的事情。与您的代码相比,它并不是特别有效,但看起来很花哨。

NSString *s = @"3 + 1 - 2 * 4 / 4";

NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"+-*/"] invertedSet];

NSArray *a = [[s componentsSeparatedByCharactersInSet:cs] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"length > 0"]];

NSLog(@"%lu", a.count);

正如预期的NSLog()那样,将打印 4。

算法很简单:

  1. 创建一个与运算符列表相反的字符集。
  2. 按反转字符集拆分表达式字符串。
  3. 过滤掉长度为零的元素。

数组中的其余元素将是运算符。数组中元素的计数是表达式中运算符的计数。

于 2016-01-27T09:07:26.480 回答