没有通过使用数组和字符串得到我想要的结果?

时间:2015-06-20 05:33:53

标签: java arrays string

输入: -

agxgw
3
2 4
2 5
7 14

输出: -

Yes
No
Yes

我只使用以下规则回答“是”或“否”:如果位置a处的元素与非结束符号中位置b的元素相同,我将只选择两个整数a和b 。回答是,否则说不。

代码:

import java.util.Scanner;

public class Gf {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);        
        String k=sc.next();
        int k1=k.length();
        int a=sc.nextInt();
        for (int i =0; i <a; i++) {
            int b=sc.nextInt();
            int b1=b%k1;
            int c=sc.nextInt();
            int c1=c%k1;
            if(k.charAt(b1)==k.charAt(c1)) {
                System.out.println("yes");
            } else {
                System.out.println("No");
            }
        }
    }
}

3 个答案:

答案 0 :(得分:2)

String#charAt是基于零索引的,b1c1中的值假设它是基于一个索引的。

解决方案:在评估b1之前减少c1k#charAt。只有在它们的值大于零时才这样做。

int b=sc.nextInt();
int b1=b%k1;
int c=sc.nextInt();
int c1=c%k1;
b1 = b1 == 0 ? k1 - 1 : b1 - 1;
c1 = c1 == 0 ? k1 - 1 : c1 - 1;

答案 1 :(得分:0)

一旦你得到了char b1和c1。 那么你只需要找到字符串中的天气字符k =&#34; agxgw&#34;在位置b1和c1是否相同。现在字符串k很小但是整数b1和c1可以大于它的长度。

所以只需计算字符串长度b1和c1的mod,然后比较字符是否相同。

例如:

mod可以使用%operator计算。

m1 = b1 % stringlength of k
m2 = c1 % stringlength ok k

现在char m1和m2小于k的stringlength 所以只要比较两者是否相同。

答案 2 :(得分:0)

您可以像这样重写部分代码:

int b = sc.nextInt() - 1;
int b1 = b % k1;
int c = sc.nextInt() - 1;
int c1 = c % k1;

原因是Java数组的索引从零开始。