zoukankan      html  css  js  c++  java
  • 1417. 重新格式化字符串『简单』

    题目来源于力扣(LeetCode

    一、题目

    1417. 重新格式化字符串

    题目相关标签:字符串

    提示:

    • 1 <= s.length <= 500
    • s 仅由小写英文字母和/或数字组成。

    二、解题思路

    1. 按题意,字符串中只存在数字与小写字母
    2. 遍历字符串,统计字符串字母与数字的数量
    3. 创建字符串长度大小的字符数组
    4. 遍历字符串,对出现的字符串与数字存储到新数组的指定位置,即可得到格式化的字符串

    三、代码实现

    public static String reformat(String s) {
        // 因为需要遍历字符串中的字符,所以将字符串转换成字符数组再进行遍历
        char[] arr = s.toCharArray();
        // 字母数量
        int letterCount = 0;
        // 数字数量
        int numCount = 0;
        // 字母与数字的个数统计
        for (char i : arr) {
            if (i >= 'a' && i <= 'z') {
                letterCount ++;
            } else {
                numCount ++;
            }
        }
        // 字母与数字的数量差大于 1 时,说明无法组成格式化后字符串
        if (letterCount - numCount > 1 || numCount - letterCount > 1) {
            return "";
        }
        // 新字符数组用于存储格式化后的字符
        char[] res = new char[s.length()];
        // 设置索引默认为 0
        int letterIndex = 0;
        int numIndex = 0;
        // 出现次数较小的一方,索引从 1 开始,否则从 0 开始
        if (letterCount == numCount) {
            // 出现次数相同时,使任一项的索引为 1
            numIndex = 1;
        } else if (letterCount < numCount) {
            letterIndex = 1;
        } else {
            numIndex = 1;
        }
        // 遍历原字符数组,进行格式化的操作
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] >= 'a' && arr[i] <= 'z') {
                res[letterIndex] = arr[i];
                letterIndex += 2;  // 每次加 2,隔一个字符
            } else {
                res[numIndex] = arr[i];
                numIndex += 2;  // 每次加 2,隔一个字符
            }
        }
        return String.valueOf(res);
    }
    

    四、执行用时

    五、部分测试用例

    public static void main(String[] args) {
        String str = "a0b1c2";  // output:"0a1b2c"
    //    String str = "leetcode";  // output:""
    //    String str = "1229857369";  // output:""
    //    String str = "covid2019";  // output:"c2o0v1i9d"
    //    String str = "ab123";  // output:"1a2b3"
        String result = reformat(str);
        System.out.println(result);
    }
    
  • 相关阅读:
    C#产生不重复随机数
    NT6 HDD Installer(硬盘装系统工具)装系统
    R语言实现 广义加性模型 Generalized Additive Models(GAM) 入门
    matlab小段代码学习
    java连接sql server2005
    python正则表达式
    Ubuntu下安装配置JDK 7
    mysql取代rand()的高效率随机读取方法
    UVA 1335 Beijing Guards
    杂思
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/12884756.html
Copyright © 2011-2022 走看看