Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查以00或0开头的数字字符串_Java_Arrays_String - Fatal编程技术网

Java 检查以00或0开头的数字字符串

Java 检查以00或0开头的数字字符串,java,arrays,string,Java,Arrays,String,是否有一种优化的方法来识别以单零、双零或三零开头的数字字符串 For eg: 01234 -- Single zero 001234 -- double 00023232 -- triple. 我知道,一种方法是根据位置逐个遍历,并检查其是否为零。但除此之外,还有更好的办法吗 谢谢 我知道,一种方法是根据位置逐个遍历,并检查其是否为零。但除此之外,还有更好(更优化)的方法吗 不,循环将是我认为计算前导零的最简单和最快的方法 此代码最多可计算三个,因为这似乎是您想要的: public stati

是否有一种优化的方法来识别以单零、双零或三零开头的数字字符串

For eg: 01234 -- Single zero
001234 -- double
00023232 -- triple.
我知道,一种方法是根据位置逐个遍历,并检查其是否为零。但除此之外,还有更好的办法吗

谢谢

我知道,一种方法是根据位置逐个遍历,并检查其是否为零。但除此之外,还有更好(更优化)的方法吗

不,循环将是我认为计算前导零的最简单和最快的方法

此代码最多可计算三个,因为这似乎是您想要的:

public static int leadingZerosCount(String s){
   int zeros=0;
   for(int i=0;i<3 && i<s.length();i++) {
      if(s.charAt(i)=='0')
        zeros++;
      else
        break;
   }
   return zeros;
}
我知道,一种方法是根据位置逐个遍历,并检查其是否为零。但除此之外,还有更好(更优化)的方法吗

不,循环将是我认为计算前导零的最简单和最快的方法

此代码最多可计算三个,因为这似乎是您想要的:

public static int leadingZerosCount(String s){
   int zeros=0;
   for(int i=0;i<3 && i<s.length();i++) {
      if(s.charAt(i)=='0')
        zeros++;
      else
        break;
   }
   return zeros;
}

您可以简单地使用String类的“startsWith”方法:

boolean startWithZeros(String str, integer countOfZeroes) {
    StringBuilder sb = new StringBuilder();
    for( integer i = 0; i < coutOfZeroes; i++ )
    sb.append("0");
    return str.startsWith(sb.toString());
}
布尔起始零(字符串str,整数countofzero){
StringBuilder sb=新的StringBuilder();
for(整数i=0;i
您可以简单地使用String类的“startsWith”方法:

boolean startWithZeros(String str, integer countOfZeroes) {
    StringBuilder sb = new StringBuilder();
    for( integer i = 0; i < coutOfZeroes; i++ )
    sb.append("0");
    return str.startsWith(sb.toString());
}
布尔起始零(字符串str,整数countofzero){
StringBuilder sb=新的StringBuilder();
for(整数i=0;i
为了清楚起见,您想确定它是哪种情况(单、双、三重),而不仅仅是它是否适合其中一种情况?我想知道的是,数字以单零或多零开始。。。这就是为什么这和“数字从一个零开始”不同?我需要检查数字是本地号码还是国际号码,如果是单号,那么是本地号码。double意味着你也可以转换成一个数值,然后再转换回一个字符串,然后从原始字符串的长度中减去这个字符串的长度。为了清楚起见,你想确定它是哪种情况(单、双、三),而不仅仅是它是否适合其中一种情况?我想知道,数字以单个零或多个零开始。。。这就是为什么这和“数字从一个零开始”不同?我需要检查数字是本地号码还是国际号码,如果是单号,那么是本地号码。double表示您也可以转换为数值,然后将其转换回字符串,然后从原始字符串的长度中减去该字符串的长度。@Naruto您可能需要不带正则表达式的版本。正则表达式版本比非正则表达式版本慢6到7倍。@鸣人你可能想要没有正则表达式的版本。正则表达式版本比非正则表达式版本慢6到7倍,所以他们必须调用3次才能确定它是1、2还是3。程序每次都必须建立相同的简单的
“0”
“00”
“000”
常量。我只是给出了一种方法来检查前导零,而不必手动遍历字符串(也不必使用regex,因为我认为它对于这个轻松的任务来说太重了)。最快的方法是直接扫描前导零。如果您经常需要它,您必须通过缓存模式对其进行优化,并适应您的数据,前提是您知道它通常以多个零开始,而不是仅以1个零开始。因此,他们必须调用此函数3次,以确定它是1、2还是3。程序每次都必须建立相同的简单的
“0”
“00”
“000”
常量。我只是给出了一种方法来检查前导零,而不必手动遍历字符串(也不必使用regex,因为我认为它对于这个轻松的任务来说太重了)。最快的方法是直接扫描前导零。如果您经常需要它,那么您必须通过缓存模式对其进行优化,并适应您的数据,前提是您知道数据通常从多个零开始,而不是仅从1个零开始。