用java写L1-086 斯德哥尔摩火车上的题 分数 15 作者 陈越 单位 浙江大学 tt.png 上图是新浪微博上的一则趣闻,是瑞典斯德哥尔摩火车上的一道题,看上去是段伪代码: s = '' a = '1112031584' for (i = 1; i < length(a); i++) { if (a[i] % 2 == a[i-1] % 2) { s += max(a[i], a[i-1]) } } goto_url('www.multisoft.se/' + s) 其中字符串的 + 操作是连接两个字符串的意思。所以这道题其实是让大家访问网站 www.multisoft.se/112358(注意:比赛中千万不要访问这个网址!!!)。 当然,能通过上述算法得到 112358 的原始字符串 a 是不唯一的。本题就请你判断,两个给定的原始字符串,能否通过上述算法得到相同的输出? 输入格式: 输入为两行仅由数字组成的非空字符串,长度均不超过 10 4 ,以回车结束。
时间: 2024-04-04 18:29:21 浏览: 72
一道java题
好的,下面是我的Java代码实现:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String a = scanner.nextLine();
String b = scanner.nextLine();
String resultA = getResult(a);
String resultB = getResult(b);
if (resultA.equals(resultB)) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
private static String getResult(String str) {
StringBuilder sb = new StringBuilder();
for (int i = 1; i < str.length(); i++) {
if (str.charAt(i) % 2 == str.charAt(i - 1) % 2) {
sb.append((char) Math.max(str.charAt(i), str.charAt(i - 1)));
}
}
return sb.toString();
}
}
```
思路解析:
首先,我们需要明确题目的意思。题目中说了,这道题实际上是判断两个字符串是否通过给定的算法能够得到相同的输出。那么我们需要做的就是实现这个算法,然后对两个字符串分别进行操作,比较得到的结果是否相同。
接下来,我们需要分析给定的算法。根据题目中给出的伪代码和样例,我们可以得出以下算法实现:
1. 定义一个空字符串s,用来存储结果。
2. 遍历字符串a,从第2个字符开始,依次判断当前字符和前一个字符的奇偶性是否相同。
3. 如果相同,将当前字符和前一个字符中较大的一个添加到字符串s中。
4. 最后返回字符串s。
根据上述算法,我们可以实现getResult()方法,用来得到字符串的输出结果。
最后,在主函数中,我们只需要分别对两个字符串调用getResult()方法得到输出结果,然后比较两个结果是否相同即可。
注意事项:
在本题中,我们需要注意一下几点:
1. 输入的字符串长度不超过 10^4,所以我们需要使用字符串类型来存储输入。
2. 在比较字符串是否相等时,不能使用 == 操作符,而应该使用 equals() 方法。
3. 本题中不需要访问网站,所以不要在程序中访问任何网站,以免出现意外情况。
希望我的Java代码能够帮助到你!
阅读全文