zoukankan      html  css  js  c++  java
  • 1417. Reformat The String

    Given alphanumeric string s. (Alphanumeric string is a string consisting of lowercase English letters and digits).

    You have to find a permutation of the string where no letter is followed by another letter and no digit is followed by another digit. That is, no two adjacent characters have the same type.

    Return the reformatted string or return an empty string if it is impossible to reformat the string.

    Example 1:

    Input: s = "a0b1c2"
    Output: "0a1b2c"
    Explanation: No two adjacent characters have the same type in "0a1b2c". "a0b1c2", "0a1b2c", "0c2a1b" are also valid permutations.
    

    Example 2:

    Input: s = "leetcode"
    Output: ""
    Explanation: "leetcode" has only characters so we cannot separate them by digits.
    

    Example 3:

    Input: s = "1229857369"
    Output: ""
    Explanation: "1229857369" has only digits so we cannot separate them by characters.
    

    Example 4:

    Input: s = "covid2019"
    Output: "c2o0v1i9d"
    

    Example 5:

    Input: s = "ab123"
    Output: "1a2b3"
    

    Constraints:

    • 1 <= s.length <= 500
    • s consists of only lowercase English letters and/or digits.
    class Solution {
        public String reformat(String s) {
            int le = s.length();
            StringBuffer letters = new StringBuffer();
            StringBuffer digits = new StringBuffer();
            StringBuffer res = new StringBuffer();
            for(char c: s.toCharArray()){
                if(c >= '0' && c <='9') digits.append(c);
                else if(c >='a' && c <= 'z') letters.append(c);
            }
            if(letters.length() >= (digits.length() + 2) || (letters.length() + 2)<= digits.length()) return "";
            else{
                if(letters.length() == (digits.length() + 1)){
                    res.append(letters.charAt(0));
                    for(int i = 0; i < digits.length(); i++){
                        res.append(digits.charAt(i));
                        res.append(letters.charAt(i+1));
                    }
                }
                else if(letters.length() == (digits.length() - 1)){
                    res.append(digits.charAt(0));
                    for(int i = 0; i < letters.length(); i++){
                        res.append(letters.charAt(i));
                        res.append(digits.charAt(i+1));
                    }
                }
                else{
                    for(int i = 0; i < letters.length(); i++){
                        res.append(letters.charAt(i));
                        res.append(digits.charAt(i));
                    }
                } 
            }
            return res.toString();
        }
    }
  • 相关阅读:
    C# DataSet与DataTable的区别和用法
    黑马程序员_ADO.Net(ExecuteReader,Sql注入与参数添加,DataSet,总结DataSet与SqlDataReader )
    CSS中a标签样式的“爱恨”原则
    外部调用JS文件时出现中文乱码的解决办法
    #nav li:hover ul 与#nav li a:hover ul 的区别
    css sprites介绍
    CSS样式优化
    网站页面常用的尺寸
    display:inline、block、inline-block 的区别
    CSS文档流
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/12759260.html
Copyright © 2011-2022 走看看