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;
    }
}

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

相关推荐
Ynchen. ~1 分钟前
[工程实战] 攻克“数据孤岛”:基于隐语纵向联邦学习的金融风控建模全解析
算法·金融·逻辑回归·隐语
武子康3 分钟前
Java-181 OSS 实战指南:Bucket/外链/防盗链/计费与常见坑
java·大数据·分布式·oss·云存储·fastdfs·ali
程序员-King.4 分钟前
day107—同向双指针—无重复字符的最长字串(LeetCode-3)
算法·leetcode·双指针
聆风吟º4 分钟前
【Spring Boot 报错已解决】告别“Whitelabel Error Page”:Spring Boot 404报错的排查指南
java·spring boot·后端
风掣长空4 分钟前
【LeetCode】面试经典150题:合并两个有序数组
算法·leetcode·面试
w10463672p5 分钟前
java解析CSV文件(一)——Java使用Apache.Commons.CSV解析CSV文件应用实践
java·apache·springboot·csv
weixin_307779137 分钟前
Jenkins Gson API插件:统一JSON处理的基础库
java·运维·开发语言·架构·jenkins
im_AMBER7 分钟前
Leetcode 69 正整数和负整数的最大计数
数据结构·笔记·学习·算法·leetcode
fufu03118 分钟前
Linux环境下的C语言编程(三十六)
linux·c语言·开发语言·数据结构·算法
踢球的打工仔9 分钟前
前端html(1)
前端·算法·html