首页 > 其他 > 详细

942. DI String Match

时间:2019-04-05 10:07:20      阅读:103      评论:0      收藏:0      [点我收藏+]

一、算法:

核心算法非常简单,找规律即可,代码如下:

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;

二、结果:

技术分享图片

三、一点小建议:

为了方便调试,笔者有如下建议

  • 使用idea
  • 在src下创建input.txt,并将题干中给出的样例输入写入input.txt
  • 创建Main类
    • 创建main方法
    • 从input.txt读取输入,并调用solution中需要我们实现的方法
    • 将结果输出出来
  • 以本题为例,目录结构&代码如下:

技术分享图片

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;
    }
}

942. DI String Match

原文:https://www.cnblogs.com/huangming-zzz/p/10657795.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!