String练习

本文介绍了一种寻找两个字符串间最大公共子串的有效算法,并通过具体示例进行演示。该算法首先确定较短字符串,然后逐步减少其长度,检查是否能在较长字符串中找到相应的子串。
目标:查找两个字符串中最大的公共子串

例String s1=“asdfg”; String s2=“asdx”

则最大公共子串为“asd”

思路:

1.以短的字符串为主,在长的字符串中判断是否存在,如果存在,已找到。
2.如果没有,将短的字符串长度递减获取子串继续道长的串中查找。
3.没有找到,说明没有相同的。

代码:

public class Stringtest3 {
public static void main(String[] args) {
// 两个字符串最大的子串;
// "asdfghjkzxcvb"
// "asdfghqwer"
String s1 = "asdfghjkzxcvb ";
String s2 = "asdfghqwer ";
String MaxSub=GetMaxSub(s1,s2);
System.out.println("MaxSub="+MaxSub);


}


private static String GetMaxSub(String s1, String s2) {
// TODO Auto-generated method stub
String longstr,shortstr;
longstr=(s1.length()>s2.length())?s1:s2;
shortstr=s1.equals(longstr)?s2:s1;
for (int i = 0; i < shortstr.length(); i++) {
for (int j = 0,z=shortstr.length()-i;z<=shortstr.length();j++,z++) {
String temp=shortstr.substring(j, z);
//System.out.println(temp);
if(longstr.contains(temp))
return temp;
}
}
return null;
}
}

在Java中,对象与字符串相关的练习题通常涉及对字符串的操作以及如何将字符串作为对象处理。以下是一些典型的练习题示例: ### 获取字符串的首尾字符 给定一个字符串 `"面向对象是以对象为核心..编程思想"`,编写程序获取并打印第一个下标和最后一个下标的字符。 ```java public class SiXiang { public static void main(String[] args) { // 定义的字符串 String a = "面向对象是以对象为核心..编程思想"; // 获取并打印第一个和最后一个下标的字符 System.out.println(a.charAt(0)); // 输出第一个字符 System.out.println(a.charAt(a.length() - 1)); // 输出最后一个字符 } } ``` ### 反转输入的句子中的每个单词 用户输入一句英文,例如 `oT eb ro ton ot eb.`,要求反转每个单词的字母顺序,但保持单词的位置不变。 ```java import java.util.Scanner; public class Test3 { public static void main(String[] args) { Scanner input = new Scanner(System.in); String str = input.nextLine(); String[] words = str.split("\\s+"); StringBuilder str1 = new StringBuilder(); for (int i = 0; i < words.length; i++) { StringBuilder str2 = new StringBuilder(words[i]); str1.append(str2.reverse()); if (i < words.length - 1) { str1.append(" "); } else { str1.append("."); } } System.out.println(str1.toString()); } } ``` ### 字符串压缩 设计一个算法来实现字符串压缩功能,比如将 `"aaabbcc"` 压缩为 `"a3b2c2"`。如果压缩后的字符串没有变短,则返回原字符串。 ### 使用String类的方法 整理并练习使用`String`类的一些常用方法,如: - `length()`:获取字符串长度 - `charAt(int index)`:获取指定索引处的字符 - `getChars(int srcBegin, int srcEnd, char dst[], int dstBegin)`:复制字符串中的字符到目标数组 - `replace(char oldChar, char newChar)`:替换字符串中的某些字符 - `toUpperCase()` 和 `toLowerCase()`:转换字符串大小写 - `trim()`:去除字符串两端空格 - `toCharArray()`:转换字符串为字符数组 这些练习可以帮助理解如何在Java中处理字符串,并且能够熟练运用面向对象的思想进行编程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值