首先要找出数组中有多少个有效的字符串,然后根据这个个数,创建一个稀疏数组,数组的大小为有效字符串个数加一。加一的原因是要多一行存储原数组有多少行,以及有效字符串的个数。
分析图如下:
row表示所在的行,value表示所在行的值,即字符串。
代码如下:
class Solution {
public int findString(String[] words, String s) {
//遍历数组,求出有效字符串的个数
int count = 0; //记录有效字符串的个数
boolean flag = false; //标志位,是否找到给定的字符串
int index = -1; //记录索引位置
for(int i = 0; i < words.length; i++){
if(words.length != 0){
count++;
}
}
//创建稀疏数组
String[][] str = new String[count+1][2];
str[0][0] = String.valueOf(words.length);
str[0][1] = String.valueOf(count);
//将有效字符串存到稀疏数组中
int num = 0; //添加有效字符串的下标
for (int i = 0; i < words.length; i++) {
if (words.length != 0) {
num++;
str[num][0] = String.valueOf(i); //保存原数组索引
str[num][1] = words[i]; //保存原数组索引i对应的值
}
}
//遍历稀疏数组
for (int i = 1; i < count+1; i++) {
if (s.equals(str[i][1])) {
flag = true;
index = Integer.valueOf(str[i][0]);
break;
}
}
//判断是否找到,没有找到则返回-1
if (flag) {
return index;
} else {
return -1;
}
}
}
Q.E.D.