核心算法非常简单,找规律即可,代码如下:
char[] arr = S.toCharArray();
int N = arr.length;
int[] ans = new int[N+1]; //初始化
int increase = N;
int decrease = 0;
for(int i = 0; i < N; i++) {
if(arr[i] == 'D') {
ans[i] = increase;
increase--;
}
else {
ans[i] = decrease;
decrease++;
}
}
ans[N] = decrease;
为了方便调试,笔者有如下建议
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
File f = new File("src/input.txt");
Scanner scanner = null;
try {
scanner = new Scanner(f);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
while(scanner.hasNextLine()) {
int[] ans = new Solution().diStringMatch(scanner.nextLine());
for(int i = 0; i < ans.length; i++) {
System.out.print(ans[i]);
}
System.out.println("");
}
}
}
class Solution {
public int[] diStringMatch(String S) {
char[] arr = S.toCharArray();
int N = arr.length;
int[] ans = new int[N+1];
int increase = N;
int decrease = 0;
for(int i = 0; i < N; i++) {
if(arr[i] == 'D') {
ans[i] = increase;
increase--;
}
else {
ans[i] = decrease;
decrease++;
}
}
ans[N] = decrease;
return ans;
}
}
原文:https://www.cnblogs.com/huangming-zzz/p/10657795.html