2024.4.1力扣每日一题——故障键盘

2024.4.1

      • 题目来源
      • 我的题解
        • [方法一 直接利用StringBuilder的反转函数](#方法一 直接利用StringBuilder的反转函数)
        • [方法二 字符数组](#方法二 字符数组)

题目来源

力扣每日一题;题序:2810

我的题解

方法一 直接利用StringBuilder的反转函数

使用StringBuilder构造结果,并利用其反转函数进行翻转
时间复杂度 :O( n 2 n^2 n2)
空间复杂度:O(1)

java 复制代码
 public String finalString(String s) {
  StringBuilder sb=new StringBuilder();
     for(char ch:s.toCharArray()){
         if(ch=='i')
             sb=sb.reverse();
         else
             sb.append(ch);
     }
     return sb.toString();
 }
方法二 字符数组

使用字符数组代替StringBuilder,自定义实现reverse方法,使得时间复杂度降低到O(logn)
时间复杂度:O(nlogn)

空间复杂度:O(1)。char数组是结果数组,不计算入空间复杂度

java 复制代码
public String finalString(String s) {
    char[] sb=new char[s.length()];
    int i=0;
    for(char ch:s.toCharArray()){
        if(ch=='i')
            reverse(sb,i);
        else
            sb[i++]=ch;
    }

    return new String(sb,0,i);
}
public void reverse(char[] s,int n){
    for(int i=0;i<n/2;i++){
        char t=s[i];
        s[i]=s[n-i-1];
        s[n-i-1]=t;
    }
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

相关推荐
小羊没烦恼!2 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
倒头就睡的小比特2 天前
算法竞赛C++常用的STL
c++·算法
俊昭喜喜里2 天前
java中的继承和多态的区别
java
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕2 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码2 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖2 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时2 天前
01-06-A-JVM排查实战详解
java·jvm
猎头南楼2 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
vipxieliang2 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot