一個常規(guī)的字符串查找算法,兩層循環(huán),每次會記錄之前匹配到的字串,完整匹配后程序會退出,如果要優(yōu)化的話,需要使用KMP算法,大家可以百度,比較復(fù)雜。
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class findSubStringNormalTest {
@Test
public void run() {
String text = "xxb abbbb ccc add adddxdd";
String pat = "addd";
int matchlen = 0;
for (int i = 0; i < text.length(); i++) {
//外層循環(huán)控制目標(biāo)文本偏移量
for (int j = 0; j < pat.length(); j++) {
//開始匹配
if (pat.charAt(j) == text.charAt(i + j)) {
matchlen++;
if (matchlen == pat.length()) {
log.info("final match :" + text.substring(i, i + j + 1));
break;
}
} else {
//記錄每次匹配到的子串
if (matchlen > 0) {
log.info("match:" + text.substring(i, i + j + 1));
}
matchlen = 0;
break;
}
}
}
}
}
程序輸出
com.example.findSubStringNormalTest : match:ab
com.example.findSubStringNormalTest : match:add
com.example.findSubStringNormalTest : final match :addd