6. ZigZag Conversion - LeetCode

LeetCode Problems Solutions

question description: 问题描述

//问题截图:


origin.png

//锯齿状


sawtooth.png

Thinking
你们可以自己先考虑一下。

solution with java - Java解决方案

public String convert(String s, int numRows) {


        if (numRows == 1) { //特殊处理,建议单独写在这里,避免后面逻辑复杂
            return s;
        }

        String resultStr = ""; // 结果值


        int keyIndex = 0; //字典的key值,只会是从 0 到 numrows - 1 的值
        boolean israsing = true; // 是否递增 01234321012343210


        Map<String,String> dict = new HashMap<>();//将传进来的字符串 有规律的保存进字典

        char[] characters = s.toCharArray();
        for (int i = 0 ; i < characters.length ; i ++){

            Character chars = characters[i];

            //确定在第几行
            if (keyIndex == 0) {

                israsing = true;

            }else if (keyIndex == (numRows - 1)) {

                israsing = false;
            }


            String key = keyIndex + "";
            if (dict.get(key) == null) {
                dict.put(key,chars.toString());
            }else{
                dict.put(key,dict.get(key) + chars.toString());
            }



            if (israsing) {
                keyIndex += 1;
            }else{
                keyIndex -= 1;
            }
        }


        for (int j = 0 ; j < numRows ; j ++){
            String index = j + "";
            if (dict.get(index) != null){
                resultStr += dict.get(index);
            }
        }

        return resultStr;

    }

solution with swift - swift解决方案

func convert(_ s: String, _ numRows: Int) -> String {
        
        
        if numRows == 1 { //特殊处理,建议单独写在这里,避免后面逻辑复杂
            return s
        }
        
        var resultStr = "" // 结果值


        var keyIndex = 0 //字典的key值,只会是从 0 到 numrows - 1 的值
        var israsing = true // 是否递增 01234321012343210
        
        var dict = [String:String]() //将传进来的字符串 有规律的保存进字典
        
        for char in s.characters{
            
//            let startIndex = s.index(s.startIndex, offsetBy: multiple * numRows + remainder)
//            let endIndex = s.index(s.startIndex, offsetBy: index + 1)
//            
//            resultStr = s.replacingCharacters(in: startIndex..<endIndex, with: "\(char)")
            
            //确定在第几行
            if keyIndex == 0 {
                
                israsing = true
                
            }else if keyIndex == (numRows - 1) {
                
                israsing = false
            }
            
            
            let key = String(keyIndex)
            if (dict[key] == nil) {
                dict[key] = "\(char)"
            }else{
                dict[key] = dict[key]! + "\(char)"
            }
            
            
           
            if israsing {
                keyIndex += 1
            }else{
                keyIndex -= 1
            }
        }
        
        
        for row in 0..<numRows{
            
            let index = String(row)
            
            if dict[index] != nil {
                resultStr += dict[index]!
            }
            
        }
        
        
        return resultStr
    }
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容