|
分享源码
界面截图: |
- |
是否带模块: |
纯源码 |
备注说明: |
- |
本帖最后由 火威网络 于 2022-7-27 15:12 编辑
- 实现目标:从str1 与 str2 字符串中获取最大长度相同的所有字符。
- 从JAVA 语法 和 易语言语法来看。JAVA给我感觉更容易理解他的实现思路。
- 感觉这个算法。其实可以拓展从2个字符串获取大于多少长度的所有相同字符。在某些场景估计还真有需要。故此写下例子。
输出结果应该是数组:[你好易语言, hello, China]
[Java] 纯文本查看 复制代码 public String[] getMaxSameSubString1(String str1, String str2) {
if (str1 != null && str2 != null) {
StringBuffer sBuffer = new StringBuffer();
String maxString = (str1.length() > str2.length()) ? str1 : str2;
String minString = (str1.length() > str2.length()) ? str2 : str1;
int len = minString.length();
for (int i = 0; i < len; i++) {
for (int x = 0, y = len - i; y <= len; x++, y++) {
String subString = minString.substring(x, y);
if (maxString.contains(subString)) {
sBuffer.append(subString + ",");
}
}
if (sBuffer.length() != 0) {
break;
}
}
String[] split = sBuffer.toString().replaceAll(",$", "").split("\\,");
return split;
}
return null;
}
@Test
public void testGetMaxSameSubString() {
String str1 = "你好易语言abchelloerwdWorodChinawelcome";
String str2 = "你好易语言123vhelloabcnmChina";
String[] strs = getMaxSameSubString1(str1, str2);
System.out.println(Arrays.toString(strs));
}
变量名 | 类 型 | 静态 | 数组 | 备 注 | str1 | 文本型 | | | str2 | 文本型 | | |
str1 = “你好易语言abchelloerwdWorodChinawelcome”str2 = “你好易语言123vhelloabcnmChina”GetMaxSameSubString (str1, str2 )|
GetMaxSameSubString | | | |
str1 | 文本型 | | | | str2 | 文本型 | | | | arrays | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | nLen | 整数型 | | | nLen1 | 整数型 | | | nLen2 | 整数型 | | | maxString | 字节集 | | | minString | 字节集 | | | subString | 字节集 | | | i | 整数型 | | | y | 整数型 | | | x | 整数型 | | | lpBuffer | 整数型 | | | 如果真 (str1 = “” 或 str2 = “”)返回 ()nLen1 = 取文本长度 (str1)nLen2 = 取文本长度 (str2 )maxString = AnsiToUnicode (选择 (nLen1 > nLen2, str1, str2 )) minString = AnsiToUnicode (选择 (nLen1 > nLen2, str2, str1 )) nLen = lstrlenW (取指针字节集_ (minString )) 计次循环首 (nLen, i )y = nLen - i + 1 x = 0 判断循环首 (y + x ≤ nLen )subString = 取空白字节集_ (y × 2 )lpBuffer = 取指针字节集_ (minString ) + x × 2 CopyMemory (取指针字节集_ (subString ), lpBuffer, y × 2 )如果真 (寻找字节集 (maxString, subString, ) ≠ -1 )加入成员 (arrays, UnicodeToAnsi (subString )) 如果真 (取数组成员数 (arrays ) = 0 )y = y + 1 x = x + 1判断循环尾 ()如果真 (取数组成员数 (arrays ) ≠ 0 )跳出循环 ()计次循环尾 ()计次循环首 (取数组成员数 (arrays ), i )输出调试文本 (arrays [i ])计次循环尾 ()
|
评分
-
查看全部评分
|