当前位置: 首页 > news >正文

向字符串添加空格

给你一个下标从 0 开始的字符串 s ,以及一个下标从 0 开始的整数数组 spaces 。

数组 spaces 描述原字符串中需要添加空格的下标。每个空格都应该插入到给定索引处的字符值 之前 。

  • 例如,s = "EnjoyYourCoffee" 且 spaces = [5, 9] ,那么我们需要在 'Y' 和 'C' 之前添加空格,这两个字符分别位于下标 5 和下标 9 。因此,最终得到 "Enjoy Your Coffee" 。

请你添加空格,并返回修改后的字符串

class Solution {
    public String addSpaces(String s, int[] spaces) {
        StringBuilder ans=new StringBuilder(s.length()+spaces.length);
        int j=0;
        for(int i=0;i<s.length();i++)
        {
            if(j<spaces.length&&spaces[j]==i)
            {
                ans.append(' ');
                j++;
            }
            ans.append(s.charAt(i));
        }
        return ans.toString();
    }
}

如果输入s="nicetomeetyou".spaces[4,6,10]

  • 当 i = 0 时,j = 0 ,spaces[0] = 4 ,不满足 spaces[j] == i ,执行 ans.append(s.charAt(0)) ,此时 ans 为 "n" 。
  • 当 i = 1 时,同理,执行 ans.append(s.charAt(1)) ,ans 变为 "ni" 。
  • 当 i = 2 时,执行 ans.append(s.charAt(2)) ,ans 变为 "nic" 。
  • 当 i = 3 时,执行 ans.append(s.charAt(3)) ,ans 变为 "nice" 。
  • 当 i = 4 时,j = 0 ,spaces[0] = 4 ,满足 j < spaces.length && spaces[j] == i ,先执行 ans.append(' ') ,此时 ans 为 "nice " ,然后 j++ ,j 变为 1 ,再执行 ans.append(s.charAt(4)) ,ans 变为 "nice t" 。
  • 当 i = 5 时,不满足 spaces[j] == i (此时 spaces[1] = 6 ),执行 ans.append(s.charAt(5)) ,ans 变为 "nice to" 。
  • 当 i = 6 时,满足 j < spaces.length && spaces[j] == i (此时 j = 1 ,spaces[1] = 6 ),先执行 ans.append(' ') ,ans 变为 "nice to " ,然后 j++ ,j 变为 2 ,再执行 ans.append(s.charAt(6)) ,ans 变为 "nice to m" 。
  • 后续以此类推,继续遍历字符串 s ,当 i = 10 时,满足条件,添加空格。

相关文章:

  • JavaScript函数-函数的概念
  • 列表,元组,字典,集合,之间的嵌套关系
  • LLM中的KV Cache优化技术
  • MATLAB语言的链表反转
  • cline源码分析 ---2
  • 漏洞挖掘---灵当CRM客户管理系统getOrderList SQL注入漏洞
  • 【MinIO】对象存储核心概念
  • linux中jar命令
  • C++之输入与输出
  • 【MySQL基础-17】MySQL数字函数详解:从基础到高级应用
  • Arthas线上问题诊断器
  • 进程相关概念
  • 3. HTTP协议
  • 局域网数据同步软件,局域网数据备份的方法
  • Linux驱动开发-①I2C驱动②spi驱动③uart驱动
  • UE中不同摄像机震动的区别Camera Shake
  • 分布式系统
  • P9246 [蓝桥杯 2023 省 B] 砍树-题解(最近公共祖先LCA + 树上差分)
  • Matlab人脸识别考勤系统【PCA(主成分分析)+ SVM(支持向量机)】
  • 知识表示方法之四:语义网络表示法(Semantic Network Representation)