java split 两个字符串_【码点儿】给定两个字符串,使用第二个字符串去分割第一个,实现String中的split()方法的功能。要求不使用subString()和原生split()方法...

本文介绍了一种不使用`subString()`和原生`split()`方法来实现`String`中`split()`功能的编码思路。通过游标概念,将第二个字符串作为游标在第一个字符串中遍历,匹配成功后用`null`值区分,最后组装结果集。还分享了朋友更简洁高效的解决方案,利用`indexOf()`方法寻找匹配位置。
摘要由CSDN通过智能技术生成

前几天朋友丢给我这么一道编码题,问我有没有什么想法,我当时第一想法是这道题是不是leetcode那种,这货不会是要在我这装逼炫耀吧,那就尴尬了,作为一个还没深入接触过leetcode的程序员(ps:实在惭愧),怎么可能短时间内把既准确又高效的代码甩给他,并当面给他重重一击呢。哈哈哈,开个玩笑,言归正传。

说起这种分割字符串的问题,我最先想到了学生时代接触到的游标概念,所谓游标,其实就是一个从某一端向另一端依次遍历的指针,所以我在想,用游标是不是可以作为这道题的一种解决策略呢。

基于以上想法,快速梳理一下,要达到目的必须注意以下几个关键点:

将第二个字符串作为游标,从第一个字符串的下标0开始依次向后比对;

进行比对的左右两项都有可能是多字符的,既然无法使用subString()方法,那么就要避免左右两项作为字符串整体对比的逻辑,所以我能想到的是使用字符型数组;

匹配上的部分如何同不匹配的部分区分开,哦,可以使用包装类,那就可以用null值作为特殊值达到区分的效果;

游标遍历结束后,一个null值或者连续的null值会被作为一个分割界限的整体,后续逻辑要以此为判断组装结果集以及完成流程控制;

话不多说直接上代码(以下代码可能有的bug点:特殊字符、null指针等,目前均尚不考虑)。

public class SplitDemo {

public List split(String str, String reg) {

List result = new ArrayList<>();

Character[] strArr = toCharacterArray(str);

Character[] regArr = toCharacterArray(reg);

//游标逻辑

for (int i = 0; i < strArr.length; i++) {

//标识多字符是否完全匹配

boolean flag = false;

for (int j = 0; j < regArr.length; j++) {

flag = regArr[j].equals(strArr[i + j]);

if (!flag) {

break;

}

}

if (!flag) {

continue;

}

//特殊null值赋值

for (int j = 0; j < regArr.length; j++) {

strArr[i + j] = null;

}

}

//结果集封装

String item = "";<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>