输入: -
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");
}
}
}
}
答案 0 :(得分:2)
String#charAt
是基于零索引的,b1
和c1
中的值假设它是基于一个索引的。
解决方案:在评估b1
之前减少c1
和k#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数组的索引从零开始。