已知两个字符串s1="fg cdb cabcadr",s2="abc",运用链式存储结构存储这两个字符串,试求这两个串的长度,判断第二个字符串S2是否是第一个字符串s1的子串,并指出S2在S1中的位置。(JAVA)
时间: 2024-10-25 12:06:30 浏览: 40
sdb
在Java中,我们可以使用String类提供的方法来计算字符串长度和查找子串。首先,我们创建一个链式数据结构并不是Java的标准做法,因为Java的String实际上就是不可变的字符序列,不需要额外的数据结构来存储。但是,如果我们要模拟链表,可以创建一个简单的Node类,每个节点包含一个字符和指向下一个节点的引用。以下是如何使用Java标准库来解决问题:
```java
class Node {
char data;
Node next;
public Node(char data) {
this.data = data;
this.next = null;
}
}
public class StringOperations {
// 计算字符串长度
public static int getLength(String s) {
return s.length();
}
// 判断子串是否存在并返回索引
public static int findSubstring(String mainStr, String subStr) {
if (subStr.isEmpty()) return 0; // 如果子串为空,直接返回0
for (int i = 0; i <= mainStr.length() - subStr.length(); i++) {
if (mainStr.regionMatches(i, subStr, 0, subStr.length())) {
return i; // 找到匹配的位置
}
}
return -1; // 没有找到子串
}
public static void main(String[] args) {
String s1 = "fg cdb cabcadr";
String s2 = "abc";
int len1 = getLength(s1);
int len2 = getLength(s2);
System.out.println("s1 的长度: " + len1);
System.out.println("s2 的长度: " + len2);
int index = findSubstring(s1, s2);
if (index != -1) {
System.out.println("s2 是 s1 的子串,它在 s1 中的位置是从第 " + (index+1) + " 位开始");
} else {
System.out.println("s2 不是 s1 的子串");
}
}
}
```
在这个例子中,`getLength()`函数用于计算字符串长度,`findSubstring()`函数通过迭代检查主字符串中是否存在子字符串。
阅读全文