【问题标题】:Count number of zero(0) using objective-c使用objective-c计算零(0)的数量
【发布时间】:2017-11-06 05:45:05
【问题描述】:

我想计算数字前有多少个零(0)。因为我需要保存数字之前存在的那些数字。

考试:- 假设我有一个数字 0000102。所以我想计算数字开始前有多少个零 (0)。在这次考试中,我们看到这里有 4 个零 (0)。可以这样计算吗?

【问题讨论】:

  • 你是怎么得到这个号码的?
  • 来自文本字段。所以数字总是动态的。

标签: objective-c math


【解决方案1】:
for (i=0;i<string.length;i++) 
 {  
   if ([[string characterAtIndex:i] intValue] <= 9 || [[string characterAtIndex:i] intValue] > 0 )
     {
       i++;
     }
    else
     {
      numerOfZeros++;
     }
}

【讨论】:

    【解决方案2】:
    int count = 0;
    NSString *strr = @"0000102";
    unichar findC;
    for (int i = 0; i<strr.length; i++)
     {
        findC = [strr characterAtIndex:i];
         if (findC == '0')
              {
               count++;
              }
         else
               break;
      }
     NSLog(@"%d",count);
    

    【讨论】:

    • 谢谢@Sangram,但是如果字符串像“00010002005”,那么时间可能是7的零(0)。对?所以,我认为这是一个错误的做法。提醒我字符串是动态的。请澄清。
    • NO 检查解决方案再次它会给你 3
    • 是的@sarang,你是对的。不计算全零(0)。谢谢
    【解决方案3】:

    单列的递归方法:

    @implementation NSString (category)
    
    - (NSUInteger)zeroPrefixCount
    {
        return [string hasPrefix:@"0"] ? 1 + [[string substringFromIndex:1] zeroPrefixCount] : 0;
    }
    
    @end
    

    就性能而言,这不是最佳解决方案,但它是您第一天编程课程的典型情况。

    用法

    // x will be 4
    NSUInteger x = [@"0000102" zeroPrefixCount];
    

    【讨论】:

    • 嗨@Cœur,这种方法非常正确。但是如果用户输入 0023405,那么我认为你的代码输出会是错误的
    • @SanjibDe 为什么?不,输出是正确的,它会返回 2。试试看。
    • @Cœur,我很抱歉,是的,你也是对的。谢谢你回复我
    【解决方案4】:

    我建议您将此类数字保存为 String 本身,无需进一步评估有多少个零,而是在需要时进行字符串比较。

    如果你真的想在你的数字中计算零,那么你可以考虑将它转换为字符串并使用 NSRange 和 NSString 辅助方法来获得你想要的。类似情况在这里回答。

    search if NSString contains value

    【讨论】:

      猜你喜欢
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多