leetcode周末竞赛72,第一题解题思路

题目如下图所示:


2018-02-18 19:34:13屏幕截图.png

通过读题,发现需要将字符串中的字母转换成相反的大小写形式,数字形式不变。初读题意比较简单,但是在实现的时候,会出现很多细节问题。通过分析,该问题是子集生成算法的衍生版本。具体思路和代码实现如下所示:

import java.util.ArrayList;
import java.util.List;
/**
 * Created by hadoop on 18-2-18.
 * 晚上整理,整个问题可以看成是子集生成问题。将字符串中的字母变成对应的大小写形式,如果有n个字母就可以生成2^n种排列方式。
 * 在java中将小写字母转换成大写字母,主要是将字符的值减去32即可。
 * 处理思路:
 * 首先将字符中的所有字母变为小写,然后利用子集生成生成算法,当需要用到对应位置的元素时,将对应位置的字母切换成大写,然后存储到
 * list中即可。
 */
public class LetterCasePermutation2 {

    public static char convertChar(char c) {
        char a = ' ';
        if (Character.isLetter(c)) {
            if (Character.isLowerCase(c)) {
                 a = (char) (c - 32);
            }
        }
        else{
            return c;
        }
        return a;
    }

    public static String getsubset(int n,int t,String S){
        StringBuffer buffer = new StringBuffer(S);
        for (int i=0;i letterCasePermutation(String S) {
        ArrayList result = new ArrayList<>();
        int n = S.length();
        S = S.toLowerCase();

        for (int i=0;i<(1<

你可能感兴趣的:(leetcode周末竞赛72,第一题解题思路)