题目描述
输入一个长度为4的倍数的字符串,字符串中仅包含WASD四个字母。 将这个字符串中的连续子串用同等长度的仅包含WASD的字符串替换,如果替换后整个字符串中WASD四个字母出现的频数相同,那么我们称替换后的字符串是“完美走位”。 求子串的最小长度。 如果输入字符串已经平衡则输出0。
输入
一行字符表示给定的字符串s 数据范围: 1<=n<=10^5且n是4的倍数,字符串中仅包含WASD四个字母。
输出
一个整数表示答案 四、样例输入输出
样例输入
WASDAASD
样例输出
1
我的代码:
个人见解!!!!欢迎讨论!!!!!!!!!
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();//必须输入4的倍数
if(s.length() % 4 !=0){
System.out.println("输入错误");
}
int[] res = new int[4];
for(int i=0;i<s.length();i++){
char c = s.charAt(i);
if(c == 'W'){
res[0]++;
}
if(c == 'A'){
res[1]++;
}
if(c == 'S'){
res[2]++;
}
if(c == 'D'){
res[3]++;
}
}
int target = s.length() / 4;
int ans = 0;
for(int i=0;i<4;i++){
if(res[i] > target){
ans = res[i] - target + ans;
}
}
System.out.println(ans);
}
}