Java 将括号添加到字符串中的字符序列
我需要将字符串中的一系列字符放在括号中,这样它就会选择最长的子字符串作为最佳的括号。要说清楚,因为它太复杂,无法用文字解释: 如果我的输入是:Java 将括号添加到字符串中的字符序列,java,string,if-statement,expression,contains,Java,String,If Statement,Expression,Contains,我需要将字符串中的一系列字符放在括号中,这样它就会选择最长的子字符串作为最佳的括号。要说清楚,因为它太复杂,无法用文字解释: 如果我的输入是: 'these are some chars *£&$' 'these are some chars *£&$^%(((£' 两个输入中的输出分别应为: 'these are some chars (*£&$)' 'these are some chars (*£&$^%)(((£' 所以我想把序列*&$^%放在括号里,
'these are some chars *£&$'
'these are some chars *£&$^%(((£'
两个输入中的输出分别应为:
'these are some chars (*£&$)'
'these are some chars (*£&$^%)(((£'
所以我想把序列*&$^%放在括号里,如果它存在,否则就放在括号里*&$
我希望这是有意义的 尝试类似的方法(假设目标字符串只出现一次)
尝试类似的方法(假设目标字符串只出现一次)
尝试类似的方法(假设目标字符串只出现一次)
尝试类似的方法(假设目标字符串只出现一次)
在一般情况下,此方法有效。它围绕任何给定字符串中任何关键字的最早子字符串:
public String bracketize() {
String chars = ...; // you can put whatever input (such as 'these are some chars *£&$')
String keyword = ...; // you can put whatever keyword (such as *£&$^%)
String longest = "";
for(int i=0;i<keyword.length()-1;i++) {
for(int j=keyword.length(); j>i; j--) {
String tempString = keyword.substring(i,j);
if(chars.indexOf(tempString) != -1 && tempString.length()>longest.length()) {
longest = tempString;
}
}
}
if(longest.length() == 0)
return chars; // no possible substring of keyword exists in chars, so just return chars
String bracketized = chars.substring(0,chars.indexOf(longest))+"("+longest+")"+chars.substring(chars.indexOf(longest)+longest.length());
return bracketized;
}
public String bracketize(){
String chars=…;//您可以输入任何内容(例如“这些是一些字符*£&$”)
字符串关键字=…;//您可以放置任何关键字(例如*£&$^%)
字符串最长=”;
对于(int i=0;ii;j--){
String tempString=关键字.substring(i,j);
if(chars.indexOf(tempString)!=-1&&tempString.length()>longest.length()){
最长=临时字符串;
}
}
}
if(最长.length()==0)
返回字符;//字符中不存在关键字的可能子字符串,所以只返回字符
括号中的字符串=chars.substring(0,chars.indexOf(longest))+“(“+longest+”)”+chars.substring(chars.indexOf(longest)+longest.length());
返回括号;
}
嵌套的for
循环检查关键字
的每个可能的子字符串,并选择较大的字符串
,字符
中包含的最长子字符串。例如,如果关键字是Dog,它将检查子字符串“Dog”、“Do”、“D”、“og”、“o”和“g”。它将这个可能最长的子字符串存储在longest
(初始化为空字符串)中。如果检查每个子字符串后,longest
的长度仍然为0,则在chars
中找不到关键字
的子字符串,因此返回原始字符串chars。否则,将返回一个新字符串chars
,子字符串最长
用括号(括号)括起来
希望这有帮助,让我知道它是否有效。在一般情况下,这种方法有效。它围绕任何给定字符串中任何关键字的最早子字符串:
public String bracketize() {
String chars = ...; // you can put whatever input (such as 'these are some chars *£&$')
String keyword = ...; // you can put whatever keyword (such as *£&$^%)
String longest = "";
for(int i=0;i<keyword.length()-1;i++) {
for(int j=keyword.length(); j>i; j--) {
String tempString = keyword.substring(i,j);
if(chars.indexOf(tempString) != -1 && tempString.length()>longest.length()) {
longest = tempString;
}
}
}
if(longest.length() == 0)
return chars; // no possible substring of keyword exists in chars, so just return chars
String bracketized = chars.substring(0,chars.indexOf(longest))+"("+longest+")"+chars.substring(chars.indexOf(longest)+longest.length());
return bracketized;
}
public String bracketize(){
String chars=…;//您可以输入任何内容(例如“这些是一些字符*£&$”)
字符串关键字=…;//您可以放置任何关键字(例如*£&$^%)
字符串最长=”;
对于(int i=0;ii;j--){
String tempString=关键字.substring(i,j);
if(chars.indexOf(tempString)!=-1&&tempString.length()>longest.length()){
最长=临时字符串;
}
}
}
if(最长.length()==0)
返回字符;//字符中不存在关键字的可能子字符串,所以只返回字符
括号中的字符串=chars.substring(0,chars.indexOf(longest))+“(“+longest+”)”+chars.substring(chars.indexOf(longest)+longest.length());
返回括号;
}
嵌套的for
循环检查关键字
的每个可能的子字符串,并选择较大的字符串
,字符
中包含的最长子字符串。例如,如果关键字是Dog,它将检查子字符串“Dog”、“Do”、“D”、“og”、“o”和“g”。它将这个可能最长的子字符串存储在longest
(初始化为空字符串)中。如果检查每个子字符串后,longest
的长度仍然为0,则在chars
中找不到关键字
的子字符串,因此返回原始字符串chars。否则,将返回一个新字符串chars
,子字符串最长
用括号(括号)括起来
希望这有帮助,让我知道它是否有效。在一般情况下,这种方法有效。它围绕任何给定字符串中任何关键字的最早子字符串:
public String bracketize() {
String chars = ...; // you can put whatever input (such as 'these are some chars *£&$')
String keyword = ...; // you can put whatever keyword (such as *£&$^%)
String longest = "";
for(int i=0;i<keyword.length()-1;i++) {
for(int j=keyword.length(); j>i; j--) {
String tempString = keyword.substring(i,j);
if(chars.indexOf(tempString) != -1 && tempString.length()>longest.length()) {
longest = tempString;
}
}
}
if(longest.length() == 0)
return chars; // no possible substring of keyword exists in chars, so just return chars
String bracketized = chars.substring(0,chars.indexOf(longest))+"("+longest+")"+chars.substring(chars.indexOf(longest)+longest.length());
return bracketized;
}
public String bracketize(){
String chars=…;//您可以输入任何内容(例如“这些是一些字符*£&$”)
字符串关键字=…;//您可以放置任何关键字(例如*£&$^%)
字符串最长=”;
对于(int i=0;ii;j--){
String tempString=关键字.substring(i,j);
if(chars.indexOf(tempString)!=-1&&tempString.length()>longest.length()){
最长=临时字符串;
}
}
}
if(最长.length()==0)
返回字符;//字符中不存在关键字的可能子字符串,所以只返回字符
括号中的字符串=chars.substring(0,chars.indexOf(longest))+“(“+longest+”)”+chars.substring(chars.indexOf(longest)+longest.length());
返回括号;
}
嵌套的for
循环检查关键字
的每个可能的子字符串,并选择较大的字符串
,字符
中包含的最长子字符串。例如,如果关键字是Dog,它将检查子字符串“Dog”、“Do”、“D”、“og”、“o”和“g”。它将这个可能最长的子字符串存储在longest
(初始化为空字符串)中。如果检查每个子字符串后,longest
的长度仍然为0,则在chars
中找不到关键字
的子字符串,因此返回原始字符串chars。否则,将返回一个新字符串chars
,子字符串最长
用括号(括号)括起来
希望这能帮上忙,如果需要请告诉我