字符串数组排序+一个字符串在另一字符串中出现的次数

import java.util.Arrays;

public class StringSort {

	/*
	 * 需求:
	 * 	给定一个字符串数组。按照字典的顺序进行从小到大的排序
	 * 	{"nba","abc","cba","zz","qq","lala","nima","haha","iloveyou"}
	 * 
	 * 思路:
	 * 	1)排序首先想到的是对整数的排序,对字符串能否排序?
	 * 	1.1)通过查阅api文档,发现在String类下有一个用于比较字符串大小的方法:
	 * 	compareTo(String anotherString) 按字典顺序比较两个字符串,返回值类型是Int
	 *	2)用冒泡法对字符串数组进行排序。
	 *
	 * 分析:
	 * 	1)创建一个能够对字符串数组排序的方法,把该数组丢给该参数让其排序
	 * 	2)比较分为外圈和内圈
	 * 	2.1)外圈比较的是比较的次数,简单的理解就是数组第几个角标开始比。
	 * 	2.2)内圈比较的意义,简单点说就是外圈第几个角标给开始,与后面每一个角标元素比较,每一次
	 * 		比较后小的数就往左边移,直到所有的数比较完为止。
	 *		
     *     		 
	 */
	
	public static void main(String[] args) {
		String[] arr = {"nba","abc","cba","zz","qq","lala","nima","haha","iloveyou"};
		System.out.println("arr0:"+Arrays.toString(arr));
		stringSort(arr);
		System.out.println("arr1:"+Arrays.toString(arr));
	}

	private static void stringSort(String[] arr) {
		//外圈,length-1的目的是比较到倒数第二个数是就可以全部比较完
		for(int i = 0;i<arr.length-1;i++){
			//内循环,从i+1开始比较
			for(int j =i+1;j<arr.length;j++){
				if(arr[i].compareTo(arr[j]) > 0){
					String temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
		}
	}
}

输出结果:

arr0:[nba, abc, cba, zz, qq, lala, nima, haha, iloveyou]
arr1:[abc, cba, haha, iloveyou, lala, nba, nima, qq, zz]

字符串indexOf+subString方法练习

/*
 * 需求:
 * 	求一个字符串在整串中出现的次数:
 * 例如:"asdf"在"asdfjijlasdfijiupasdfuoyooasdfdiuasdfoasdiyp"出现的次数。
 * 
 * 思路:
 * 	1)判断一个指定的字符串是否在整串中存在,这个可以用到String类中的indexOf方法。
 * 		如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引;
 * 		如果它不作为一个子字符串出现,则返回 -1。
 * 	2)indexOf方法只能判断指定的字符串是否在整串中存在,并且记录下来该指定的字符串第一次出现的索引的位置。
 * 	2.1)如果有一个方法能够通过索引位置去切割整个字符串就好了,这样就可以通过不断的切割就可以判断整个字符串
 * 		有几个指定的字符串出现。
 * 而在api中的String类中有一个substring(int beginIndex)方法返回一个新的字符串,它是此字符串的一个子字符串。
 * 	3)即可以通过不断的去判断,切割比完整个字符串。
 * 
 * 分析:
 * 	1)创建一个方法可以通过传递两个字符串参数a,b就可以得到一个返回为整数次数count的方法
 */
public class StringApperaTimes {

	public static void main(String[] args) {
		
		String key = "asdf";
		String str = "asdfjijlasdfijiupasdfuoyooasdfdiuasdfoasdiyp";
		int count = getKeyStringCount(str,key);
		System.out.println("count="+count);
	}

	/**
	 * 判断字符串key在字符串str中出现的次数
	 * @param str 字符串长串
	 * @param key 字符串短串
	 * @return
	 */
	private static int getKeyStringCount(String str, String key) {
		
		//定义一个记录出现次数的变量
		int count = 0;
		//初始化索引值为
		int index = 0;
		
		//通过indexof判断key在str第一次出现的角标所以
		while((index = str.indexOf(key) )!=-1){
			//从指定索引位置开始去切割字符串,切割后的字符串作为字符串。
			str = str.substring(index+key.length());
			System.out.println("index="+index);
			count++;
		}
		//zhu每一次while内部语句完成后index都会重新初始化,这个涉及到内部外部参数的取值问题
		return count;

	}

}
输出结果:
index=4
index=5
index=5
index=3

count=5
注意每一次while内部语句完成后index都会重新初始化。从输出结果index每一次变化值就可以看出


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值