一.查找字符串中第一次重复的字符
1.描述
字符串的操作一般设计它的几个方法
String s="sss";
s.charAt(0);
s.indexOf("s");
字符串String详解:https://blog.csdn.net/weixin_37730482/article/details/72482118
2.代码
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String string1 = "1234dfgtr23slMK";
int i1 = testMethod(string1);
char c1 = string1.charAt(i1);
Log.d("TAG", string1 + "中第一个重复的字符位置----:" + i1 + " 字符----:" + c1);
String string2 = "111111111eeedddd";
int i2 = testMethod(string2);
char c2 = string2.charAt(i2);
Log.d("TAG", string2 + "中第一个重复的字符位置----:" + i2 + " 字符----:" + c2);
String string3 = "asdasd";
int i3 = testMethod(string3);
char c3 = string3.charAt(i3);
Log.d("TAG", string3 + "中第一个重复的字符位置----:" + i3 + " 字符----:" + c3);
}
/**
* 查找字符串第一次重复的字符
*
* @param string 输入的字符
*/
private int testMethod(String string) {
if (TextUtils.isEmpty(string)) return -1;
int length = string.length();
int position = -1;
for (int i = 0; i < length - 1; i++) {
char firstChar = string.charAt(i);
for (int j = i + 1; j < length; j++) {
char secondChar = string.charAt(j);
if (secondChar == firstChar) {
return j;//跳出最外层的For循环 整个过程结束
}
}
}
return position;
}
}
3.结果
D/TAG: 1234dfgtr23slMK中第一个重复的字符位置----:9 字符----:2
D/TAG: 111111111eeedddd中第一个重复的字符位置----:1 字符----:1
D/TAG: asdasd中第一个重复的字符位置----:3 字符----:a
二.查找字符串中第一次没有重复的字符
<1> 思路
(1) for循环取出每个位置上的字符;
(2) 利用String.indexOf(字符) 方法 第一次出现的位置;
(3) 再利用String.lastIndexOf(字符) 方法 最后一次出现的位置;
(4) 两个位置相同 既是要找的字符;
<2> 代码
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String string1 = "123456";
int i1 = testMethod(string1);
char c1 = string1.charAt(i1);
Log.d("TAG", string1 + "中第一次没有重复的字符位置----:" + i1 + " 字符----:" + c1);
String string2 = "111111111eeeddddASD";
int i2 = testMethod(string2);
char c2 = string2.charAt(i2);
Log.d("TAG", string2 + "中第一次没有重复的字符位置----:" + i2 + " 字符----:" + c2);
String string3 = "asdasd7655672ASD";
int i3 = testMethod(string3);
char c3 = string3.charAt(i3);
Log.d("TAG", string3 + "中第一次没有重复的字符位置----:" + i3 + " 字符----:" + c3);
}
/**
* 查找字符串第一次没有重复的字符
*
* @param string 输入的字符
*/
private int testMethod(String string) {
if (TextUtils.isEmpty(string)) return -1;
int position = -1;
int length = string.length();
for (int i = 0; i < length; i++) {
char c = string.charAt(i);
if (string.indexOf(c) == string.lastIndexOf(c)) {//第一次出现和最后一次出现下标一致
position = string.indexOf(c);
break;
}
}
return position;
}
}
<3> 结果
D/TAG: 123456中第一次没有重复的字符位置----:0 字符----:1
D/TAG: 111111111eeeddddASD中第一次没有重复的字符位置----:16 字符----:A
D/TAG: asdasd7655672ASD中第一次没有重复的字符位置----:12 字符----:2