招银三面手撕代码题(字符串连续子串)

Posted yzhengy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了招银三面手撕代码题(字符串连续子串)相关的知识,希望对你有一定的参考价值。

import java.util.*;

/*编写函数,找出字符串中连续出现的字符
* 返回连续字符子串的数组
* 若无连续字符子串,返回空数组*/

public class continuationsubstring {

        public static void main(String[] args) {
            LinkedList<String> list = new LinkedList();
            List<String> res = getRes("dad", list);
            System.out.println(res);
        }

        public static List<String> getRes(String str, List list) {
            int count = 1;//count用来对重复元素个数计数,每次元素值改变之后都是1
            char ch = str.charAt(0);
            for (int i = 0; i < str.length(); i++) {
                //判断如果当前索引处的值和ch相同就count++
                while (++i < str.length() && str.charAt(i) == ch) {
                    count++;
                }
                //默认每个元素都会出现一次,如果大于1代表出现了两次,放到list中
                if (count > 1) {
                    StringBuilder builder = new StringBuilder();
                    for (int j = 0; j < count; j++) {
                        builder.append(ch);
                    }
                    list.add(builder.toString());
                }
                //此时已经退出while循环,代表这个元素已经和之前的不同了
                // 每次在本次循环之后维护ch和i和count的值
                if (i < str.length()) {
                    ch = str.charAt(i);
                    count = 1;//默认count都应该是1,因为每个新元素 都出现了1次
                    i--;//上边while循环的时候是++i,此时再减回来
                }
            }
            return list;
        }
    }

以上是关于招银三面手撕代码题(字符串连续子串)的主要内容,如果未能解决你的问题,请参考以下文章

算法面试手撕代码高频题汇集

招银2018[编程题]寻找合法字符串

华为OD机试 - 最长连续子串(Python)| 真题+思路+考点+代码+岗位

算法手撕代码51~55

华为OD机试真题Java实现最长连续子串真题+解题思路+代码(2022&2023)

初识面试中的算法题