目录
学习目标:
- 数组的遍历访问(普通循环,增强for循环)
- 数组元素的顺序查找
- 数组元素的冒泡法排序
- Arrays工具类的使用
- 二维数组
学习内容:
延伸:
String的index方法:
indexOf(int,ch)
先看第一个indexOf它返回值是int,在看它的参数(int,ch)意思就是使用者可以给参数一个‘char’字符所代表的int值,然后去从前向后找到该字符在字符串中第一次出现处的索引,当然了我们不可能记得住每一个char的值所以我们在使用时直接用String s=abcdef;int i=s.indexOf('d');这种方式就可以了,char类型会自动提升为int类型,还有就是要注意如果返回值为-1,就说明索引越界了;
indexOf(int ch,int,fromIndex)
这个方法就是说从指定位置往后找返回字符在该字符串中第一次出现处的索引,比如“woaizhongguo”indexOf('o',2)那返回值就是6而不是1,也不是11;
indexOf(Sting str)
这个方法基本就类似前面的了,只不过它是在参数里给一个子字符串,然后返回该子字符串在该字符串中第一次出现处的索引,比如"woaixuexi"要查"ai"这个子字符串在整个字符串中出现的索引位置那返回值就是2
indexOf(String str,int fromIndex)
这个方法就是说从指定位置往后找返回子串在该字符串中第一次出现处的索引。
lastIndexOf(int ch)
这个方法也是跟indexof相反,它是从后往前找返回字符在字符串中最后一次出现处的索引,也就是说找索引的时候是倒着找的但是返回值还是按照正的索引顺序返回的比如"woaiwo"用lastindexof查找‘w’返回的值是4而不是1
lastIndexOf(int ch,fromindex)
这个方法表示从指定的索引处从后往前找该字符在此字符串中最后一次出现处的索引,比如是指定索引为7,就从7前面的索引找第一次找到则返回索引值
substring(int begjin)
从自定位置截取字符串默认直到末尾返回值是string
substring(int begin,int end)
从指定位置开始到指定位置结束截取字符串string包含头不包含尾
String类的indexOf方法的用法
LintCode刷题:
·第n个数位
Character.getNumericValue,把字符转换成int型
string.charAt(n),字符串转换成字符数组,取出第n个元素
首先要先判断出来数是几位数,一位数9个,两位数90个,三位数900个,所以只需将n与len(位数)与count (对应位数个数)比较--(一位数总共9个数字,两位数180个,三位数2700个....),所以n大于时,把count*10和len++即可,n每过一次循环需要把对应的位数所有数字减去,start为n位数开头的首指针(1,10,100),从start开始往后加上(n-1)/len就可以把start指向n位所对应的数再根据(n-1)%len来得到是那个数的第几个数位。
public class Solution {
public int findNthDigit(int n) {
int len = 1;
long count = 9;
int start = 1;
while (n>count*len){
n-=count*len;
len++;
start*=10;
count*=10;
}
start+=(n-1)/len;
String str=Integer.toString(start);
return Character.getNumericValue(str.charAt((n-1)%len));
}
}
·创建HashSet并添加数据
创建HashSet,用add添加数据即可
import java.util.HashSet;
public class Solution {
public HashSet<String> createHashSet(String str1, String str2, String str3,
String str4) {
HashSet<String> hashSet=new HashSet<String>();
hashSet.add(str1);
hashSet.add(str2);
hashSet.add(str3);
hashSet.add(str4);
return hashSet;
}
}
·获取字符串数组中所有字符串长度的总和![](https://i-blog.csdnimg.cn/blog_migrate/82c1883d0a00b0a84afe6d281a04b703.png)
for循环加强遍历所有string的长度累加就可以实现
public class Solution {
public int getArrayStringLength(String[] stringArray) {
int length =0;
for (String str:stringArray){
length+=str.length();
}
return length;
}
}
·找到所有的水仙花数
for循环100-1000,取出所有百位个位十位,立方相加判断是否相等,输出符合条件的即可
public class Main {
public static void main(String[] args) {
for (int i=100;i<1000;i++){
int first=(int)Math.pow(i/100,3);
int second=i-i/100*100;
int third=(int)Math.pow(i%10,3);
int resultsecond=(int)Math.pow(second/10,3);
if (i==(first+resultsecond+third)){
System.out.println(i);
}
}
}
}
·创建HashMap并添加数据
用put方法打进去就可以
import java.util.HashMap;
public class Solution {
public HashMap<Integer, String> createHashMap(int number, String str) {
HashMap<Integer, String> hashMap=new HashMap<Integer, String>();
hashMap.put(number,str);
return hashMap;
}
}
·找出字符串中子串所在的位置
延伸->String的index方法
合理运用index,在index中加入循环继续寻找的思想即可
import java.util.ArrayList;
public class Solution {
public int[] getIndexArray(String str, String subStr) {
ArrayList<Integer> arrays=new ArrayList<Integer>();
int index=0;
while ((index=str.indexOf(subStr,index))!=-1){
arrays.add(index);
index+=subStr.length();
}
if(arrays.size()==0){
return new int[]{-1};
}
int[] arr=new int[arrays.size()];
if (arrays.size()>0){
for (int i=0;i<arrays.size();i++){
arr[i]=arrays.get(i);
}
}
return arr;
}
}
学习时间:
2021-8-17 9:00-11:30、19:30-20:45
学习产出:
刷题*6
学习笔记*1