[[5.27+5.28]刷题:字符串操作

本文主要介绍了LeetCode中的字符串操作题目,包括Z字形变换、最长公共前缀和划分字母区间,提供了多种解题思路。此外,还讨论了线程池、贪心算法及其在百度校招Java研发笔试中的相关知识。
摘要由CSDN通过智能技术生成

[5.27+28] 字符串操作

一、[leetcode:6] z字形变换

6. Z 字形变换 - 力扣(LeetCode) (leetcode-cn.com)

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。

在这里插入图片描述

题解一:直接用list来模拟

最开始想的是放入String,但是发现不知道怎么加,然后换成了Character,代码有点长

class Solution {
   
    public String convert(String s, int numRows) {
   
         if(numRows < 2) return s;
          List<List<Character>> temp = new ArrayList<>();
        for(int i=0;i<numRows;i++){
   
            temp.add(new ArrayList<Character>());
        }
        int index = 0;
        int flag = 1;
        for (int i = 0; i < s.length(); i++) {
   
            if (index == 0) flag = 1;
            if (flag == 1) {
   
                temp.get(index).add(s.charAt(i));
                index++;
            }
            else if (flag == 0) {
   
                temp.get(index).add(s.charAt(i));
                index--;
            }
            if (index == numRows-1) flag = 0;
        }
        //System.out.println(temp.toString());
        StringBuilder result=new StringBuilder();
        for(int i=0;i<numRows;i++){
   
            for(int j=0;j<temp.get(i).size();j++){
   
                result.append(temp.get(i).get(j));
            }
        }
        return result.toString();
    }
}

通过查看其它人的代码发现里面直接放StringBuider就可以,于是改进了一下,并且发现我的判断写的可太复杂了,可以改变一下

class Solution {
   
    public String convert(String s, int numRows) {
   
        if(numRows < 2) return s;
        List<List<Character>> temp = new ArrayList<>();
        for(int i<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值