计算每一个字符的贡献值
与前面一个的间隔后面一个的间隔
例子
ababc
前面没有相同的就是索引值+1
后面没有就是字符串长度-索引值
比如
第一个a与前面的间隔为1,与后面的间隔为2,贡献值为 12=2
第二个a与前面的间隔为2,与后面的间隔为3,贡献值为 2*3=6
import java.util.*;
public class Main{
static long score(String a,int index){
char n=a.charAt(index);//获取子串,以便寻找前后字符串
String c=a.substring(0,index),
d=a.substring(index+1);
long front=c.lastIndexOf(n)==-1//获取前同一个字符的间隔
?index+1
:index-c.lastIndexOf(n),//三元运算符应该不用解释吧
behind=d.indexOf(n)==-1//获取后同一个字符的间隔
?a.length()-index
:d.indexOf(n)+1;//不会真的有人有for循环找吧,不会吧不会吧
return front*behind;
}
public static void main(String[] args) {
String a=new Scanner(System.in).nextLine();
long count=0;
for(int i=0;i<a.length();i++)
count+=score(a,i);
System.out.println(count);
}
}