检查字符串的长度等于其最后附加的数字

时间:2017-02-03 03:15:40

标签: java brute-force

检查字符串长度的可能方法是等于最后一个附加的数字。我附上了我写的任何帮助表示赞赏的代码。

public class Test {

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    String str = "abcd10";
    String[] part = str.split("(?<=\\D)(?=\\d)");
    String strPart1 = part[0];
    int n = str.length();

        // Traverse string from end and find the number
        // stored at the end.
        // x is used to store power of 10.
        int num = 0, x = 1, i = n-1;

        for (i=n-1; i>=0; i--) {
            char c = str.charAt(i);
            if ('0' <= c &&  c  <= '9') {
                num = (c - '0')*x + num;
                x = x * 10;
                System.out.println("true");
            } else break;
        }    
   }
}

3 个答案:

答案 0 :(得分:1)

您可以使用Integer.parseInt(String)String数组中的第二个part(帖子中的10)。然后检查第一个元素的长度是否匹配。像,

String[] part = str.split("(?<=\\D)(?=\\d)");
int len = Integer.parseInt(part[1]);
if (len == part[0].length()) {
    System.out.printf("Yes. The length of %s is %d.%n", part[0], len);
} else {
    System.out.printf("No. The length of %s(%d) is not %d.%n", 
            part[0], part[0].length(), len);
}

答案 1 :(得分:0)

您已经将字符串拆分为两部分,这两部分都存储在part中。因此part[0]应为"abcd"part[1]应为"10"。所以你需要做的就是将part[1]转换为整数,并将该值与part[0]的长度进行比较,如此,

int num = Integer.parseInt(part[1]);
if(num == part[0].length()){
    System.out.println("true");
}

答案 2 :(得分:0)

使用计数器并在if

中递增
int digitCount = 0;

if ('0' <= c &&  c  <= '9') { 
    digitCount++;
    ...
}

最后(在评估n之后,即发布for循环)检查

if(num == (n-digitCount)) {
   System.out.println("Yes the length is same as the number at last.");
} else ..not