目次
1) 文字列を分割します。たとえば、「ab&&…」は、区切り文字として && を使用して文字列の組み合わせ ["ab","2",…] を取得します。
2) 文字列の組み合わせを実現します (例: ["ab", "2",...])。"&&" 区切り文字を使用して、文字列 "ab&&2&&..." に結合します。
2. 1000 個の乱数、値の範囲は [0,999]、同じ数字が 2 つある場合は、それらを見つけてください。
1. 以下の 2 つのメソッドを実装します。
言語の基本的な分割および結合関数 (Java の String.split、php のexplode および implode など) は使用できません。
1) 文字列を分割します。たとえば、「ab&&…」は、区切り文字として && を使用して文字列の組み合わせ ["ab","2",…] を取得します。
2) 文字列の組み合わせを実現します (例: ["ab", "2",...])。"&&" 区切り文字を使用して、文字列 "ab&&2&&..." に結合します。
1) 文字列を分割します。たとえば、「ab&&…」は、区切り文字として && を使用して文字列の組み合わせ ["ab","2",…] を取得します。
package test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.StringTokenizer;
/*
用indexOf()方法进行定位,然后用substring()进行截取
*/
public class SplitString {
//分割字符串
/**
* 字符串按分隔符分割方法
* @param str 需要被分割的字符串
* @param split 分隔符
* @return String[] 分割完成的字符串
*/
public static String[] splitTest(String str,String split) {
ArrayList<String> list = new ArrayList<String>();//存储分割好的字符串
while(str.indexOf(split) !=-1) {//如果没有找到匹配的字符串则返回 -1
list.add(str.substring(0,str.indexOf(split)));//截取下标从0开始,第一个分割符的下标 。范围[ , )
str = str.substring(str.indexOf(split)+split.length()); //substring()一个参数,表示截掉前n个字符,得到后面的新字符。
}
if(str != "") {//如果分割到最后,字符串不等于空
list.add(str);
}
String[] strArray = list.toArray(new String[list.size()]);//集合转成字符串
return strArray;//返回数组
}
public static void main(String []args) {
String[] strArrys = splitTest("1&&2&&3&&4&&5","&&");
System.out.println(Arrays.toString(strArrys));
}
}
2) 文字列の組み合わせを実現します (例: ["ab", "2",...])。"&&" 区切り文字を使用して、文字列 "ab&&2&&..." に結合します。
package test;
/*
字符串拼接
*/
public class StringSplit {
/**
* 字符串拼接
* @param arr 需要进行拼接的集合
* @param split 分割符
* @return 字符串
*/
public static String getStringSplit(String[] arr,String split) {
StringBuilder sb = new StringBuilder();//存储字符串
int i = 0;
for(;i<arr.length-1;i++) {
sb.append(arr[i]);
sb.append(split);
}
sb.append(arr[i]);//最后一个在外面加,因为末尾不需要加分隔符了
return sb.toString();//转换成字符串
}
//测试
public static void main(String[] args) {
String[] arr = {"1","2","3","4","5"};
String str = getStringSplit(arr,"&&");
System.out.println(str);
}
}
2. 1000 個の乱数、値の範囲は [0,999]、同じ数字が 2 つある場合は、それらを見つけてください。
package test;
import java.util.Arrays;
public class Select {
/**
* 1000个无序数找相同
* @param arr
*/
public static void equalsInt(int[] arr) {
//对数组进行排序
Arrays.sort(arr);
for(int i = 0;i<arr.length-1;i++) {
if(arr[i] == arr[i+1]) {//相邻的数进行比较
System.out.println("相同的数为:" + arr[i]);
return;//如果只有一对相同的数,return就行,减少不必要的消耗。如果有多对,就去掉return。
}
}
}
//简单测试
public static void main(String[] args) {
//录入测试数据
int[] arr = new int[1000];
for(int i = 0;i<1000;i++) {
arr[i] = i;
}
arr[100] = 56;//写一个相同值进行测试,值不等于下标就行
equalsInt(arr);
}
}
良い戦略がありましたら、ご教授ください。
間違いがあれば修正してください。