笔者在做题过程中,发现码蹄集时有相同思路java不能通过的情况,好比难度为黄金的这道题:
C++的代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main( )
{
int t;
cin>>t;
while(t--) {
int n;
string s;
cin>>n>>s;
int ans=(1+n)*n/2;
for (int i = 1;i<n;i++)if (s[i]==s[i-1])ans-=i;
cout<<ans<<endl;
}
return 0;
}
笔者代码:
import java.util.Scanner;
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// code here
int t = input.nextInt();
while (t-- > 0) {
int a = input.nextInt();
String s = input.next();
int len = s.length();
int sum = a * (a + 1) / 2;
for (int i = 0;i < len - 1;i++) {
if (s.charAt(i) == s.charAt(i + 1)) {
sum -= i + 1;
}
}
System.out.println(sum);
}
input.close();
}
}
仔细看,根本没有差别的逻辑,可是java始终错一个样例,简直好笑