一.查找字元串中第一次重複的字元
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