2、解析字符串,String getStr1(String Str,String flag),第一个参数指要输入的字符串,第二个代表要拆分的标志,比如说333113223zz,得到的应该是‘11’、‘22’,‘zz’。不可以用spli。
21 个解决方案
#1
第一题那么模糊,做不出来吧:"天朝六十年正月初九"和"20090116"完全不一样<(-︿-)>
第二题不限制用正则就用正则咯.
第二题不限制用正则就用正则咯.
#2
楼上哥哥真风趣 不是脑筋急转弯 呵呵 不过我说漏一点today和yesterday都是8位数字的字符串比如说“20081112”,这里不考虑转换问题
第二题主要用subString
第二题主要用subString
#3
取的最后两个日期减去1之后慢慢匹配吧,只是多写好多if else 还的判断闰年等等
#4
答:解析字符串,String getStr1(String Str,String flag),你都没有说明: 这个flag是个什么标记?比如333113223zz,得到的应该是‘11’、‘22’,‘zz’。怎么得到的(即:没有看到 flag起作用啊)?
#5
第一问 不之所云
第二问 你都说了, 用substring , 你就自己截取贝, 从第几个开始截取几个 不就完了
第二问 你都说了, 用substring , 你就自己截取贝, 从第几个开始截取几个 不就完了
#6
.........
#7
String getYesterday(String today){}
如果今天是2009-03-01,那么二月份的最后一天该怎么算?
如果今天是2009-03-01,那么二月份的最后一天该怎么算?
#8
可能我表达没清楚
1、写一个函数 String getYesterday(String today){},只可以重要String基本类 不可以用data工具类
输入一个时间比如说20080101,应该得到20071231,不去计较数据验证。
2、解析字符串,String getStr1(String Str,String flag),第一个参数指要输入的字符串,第二个代表要拆分的标志,比如说333113223zz,得到的应该是‘11’、‘22’,‘zz’。不可以用spli。
第二个就是说输入两个参数,以第一个是字符处比如“123a321aaa44”,第二个参数输入a,要得到“123”、“32”、“44”
1、写一个函数 String getYesterday(String today){},只可以重要String基本类 不可以用data工具类
输入一个时间比如说20080101,应该得到20071231,不去计较数据验证。
2、解析字符串,String getStr1(String Str,String flag),第一个参数指要输入的字符串,第二个代表要拆分的标志,比如说333113223zz,得到的应该是‘11’、‘22’,‘zz’。不可以用spli。
第二个就是说输入两个参数,以第一个是字符处比如“123a321aaa44”,第二个参数输入a,要得到“123”、“32”、“44”
#9
2
public static String[] liu_split(String strInfo, String strSplit) {
int size = 0;
int index = 0;
do {
size++;
index++;
index = strInfo.indexOf(strSplit, index);
} while (index != -1);
String[] arrRtn = new String[size];
int startIndex = 0;
int endIndex = 0;
for (int i = 0; i < size; i++) {
endIndex = strInfo.indexOf(strSplit, startIndex);
if (endIndex == -1) {
arrRtn[i] = strInfo.substring(startIndex);
} else {
arrRtn[i] = strInfo.substring(startIndex, endIndex);
}
startIndex = endIndex + 1;
}
return arrRtn;
}
}
public static String[] liu_split(String strInfo, String strSplit) {
int size = 0;
int index = 0;
do {
size++;
index++;
index = strInfo.indexOf(strSplit, index);
} while (index != -1);
String[] arrRtn = new String[size];
int startIndex = 0;
int endIndex = 0;
for (int i = 0; i < size; i++) {
endIndex = strInfo.indexOf(strSplit, startIndex);
if (endIndex == -1) {
arrRtn[i] = strInfo.substring(startIndex);
} else {
arrRtn[i] = strInfo.substring(startIndex, endIndex);
}
startIndex = endIndex + 1;
}
return arrRtn;
}
}
#10
哪家单位的面试题?
#11
路过
#12
不可以用data工具类
这个是不是不允许时间date类?
第二个问题并不难。
使用截取字符串的方法搞定。多做两次判断。具体做法可以参考9楼。不过感觉9楼的方法还有待补充。
#13
public class Test {
public static void main(String[] args) {
String s = "20090301";
System.out.println(getYesterday(s));
}
public static String getYesterday(String yesterday) {
String returnStr = "";
int year = 0;
int month = 0;
int day = 0;
year = Integer.parseInt(yesterday.substring(0, 4));
month = Integer.parseInt(yesterday.substring(4, 6));
day = Integer.parseInt(yesterday.substring(6, 8));
if(day != 1) {
day = day - 1;
} else {
switch(month) {
case 5:
case 7:
case 10:
case 12:
month = month - 1;
day = 30;
break;
case 1:
year = year - 1;
month = 12;
day = 30;
break;
case 3:
if(isLeapYear(year)) {
month = month - 1;
day = 29;
break;
} else {
month = month - 1;
day = 28;
break;
}
default:
month = month - 1;
day = 31;
break;
}
}
returnStr = "" + year + String.format("%02d", month) + String.format("%02d", day);
return returnStr;
}
public static boolean isLeapYear(int year) {
boolean b = false;
if(year % 400 == 0) {
b = true;
}
if((year % 4 == 0) && (year % 100 != 0)) {
b = true;
}
return b;
}
}
#14
第二道
import java.util.Scanner;
public class Split {
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.print("str=");
String str = sc.nextLine();
System.out.print("flag=");
String flag = sc.nextLine();
String[] resultStr = getStr1(str,flag);
if(resultStr == null)
{
System.out.println(str);
}
else
{
for(String s:resultStr)
{
System.out.print(s+" ");
}
}
}
public static String[] getStr1(String str,String flag)
{
int index = 0;
int backIndex = 0;
//用来确定String数组的长度
int size = 0;
int resultStrIndex = 0;
do {
size++;
index++;
index = str.indexOf(flag, index);
} while (index != -1);
String[] resultStr = new String[size];
while((index=str.indexOf(flag,backIndex))!=-1)
{
if(backIndex==index)
{
backIndex++;
}
else
{
resultStr[resultStrIndex++] = str.substring(backIndex, index);
backIndex = index ;
}
}
resultStr[resultStrIndex] = str.substring(backIndex);
return resultStr;
}
}
import java.util.Scanner;
public class Split {
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.print("str=");
String str = sc.nextLine();
System.out.print("flag=");
String flag = sc.nextLine();
String[] resultStr = getStr1(str,flag);
if(resultStr == null)
{
System.out.println(str);
}
else
{
for(String s:resultStr)
{
System.out.print(s+" ");
}
}
}
public static String[] getStr1(String str,String flag)
{
int index = 0;
int backIndex = 0;
//用来确定String数组的长度
int size = 0;
int resultStrIndex = 0;
do {
size++;
index++;
index = str.indexOf(flag, index);
} while (index != -1);
String[] resultStr = new String[size];
while((index=str.indexOf(flag,backIndex))!=-1)
{
if(backIndex==index)
{
backIndex++;
}
else
{
resultStr[resultStrIndex++] = str.substring(backIndex, index);
backIndex = index ;
}
}
resultStr[resultStrIndex] = str.substring(backIndex);
return resultStr;
}
}
#15
第一题: 可以参考JS 中的 Calendar 把每个月的最大天数列出来! 2月另外算 就可以了!
第二题: 如果只能用subString 你就一个一个字符取!匹配flag 就是了! 把不是flag 的连续的 char 列出来就可以了!如果可以正则表达式可以 免得那么麻烦
第二题: 如果只能用subString 你就一个一个字符取!匹配flag 就是了! 把不是flag 的连续的 char 列出来就可以了!如果可以正则表达式可以 免得那么麻烦
#16
第一题13楼做得好啊
#17
拜13楼 晕死,当初我也是这个思路,就是没写这么明白,把闰年的判断加到switch里面了,有点乱糟糟的。
#18
第二题:
import java.util.ArrayList;
import java.util.Scanner;
public class SplitDemo {
public static void main(String[] args){
System.out.print("Input a string: ");
Scanner scan = new Scanner(System.in);
String s = new String();
if(scan.hasNext()){
s = scan.next();
}
System.out.print("Input a param: ");
Scanner scan1 = new Scanner(System.in);
String param = new String();
if(scan1.hasNext()){
param = scan1.next();
}
SplitDemo sd = new SplitDemo();
ArrayList list = sd.divString(s, param);
for(int i=0 ; i<list.size() ; i++){
System.out.print(list.get(i)+" ");
}
}
ArrayList divString(String s,String param){
ArrayList<String> list = new ArrayList<String>();
int index = 0;
CharSequence c = param.subSequence(0, param.length());
while(s.contains(c)){
String str = s.substring(0, s.indexOf(param, index));
list.add(str);
s = s.substring(s.indexOf(param, index)+param.length());
}
list.add(s);
return list;
}
}
#19
2题
有用正则的做法没哦
有用正则的做法没哦
#20
化简为繁是现在面试准则?第一题Calendar第二题正则都是很简单就能出来的吧
#21
想想
#1
第一题那么模糊,做不出来吧:"天朝六十年正月初九"和"20090116"完全不一样<(-︿-)>
第二题不限制用正则就用正则咯.
第二题不限制用正则就用正则咯.
#2
楼上哥哥真风趣 不是脑筋急转弯 呵呵 不过我说漏一点today和yesterday都是8位数字的字符串比如说“20081112”,这里不考虑转换问题
第二题主要用subString
第二题主要用subString
#3
取的最后两个日期减去1之后慢慢匹配吧,只是多写好多if else 还的判断闰年等等
#4
答:解析字符串,String getStr1(String Str,String flag),你都没有说明: 这个flag是个什么标记?比如333113223zz,得到的应该是‘11’、‘22’,‘zz’。怎么得到的(即:没有看到 flag起作用啊)?
#5
第一问 不之所云
第二问 你都说了, 用substring , 你就自己截取贝, 从第几个开始截取几个 不就完了
第二问 你都说了, 用substring , 你就自己截取贝, 从第几个开始截取几个 不就完了
#6
.........
#7
String getYesterday(String today){}
如果今天是2009-03-01,那么二月份的最后一天该怎么算?
如果今天是2009-03-01,那么二月份的最后一天该怎么算?
#8
可能我表达没清楚
1、写一个函数 String getYesterday(String today){},只可以重要String基本类 不可以用data工具类
输入一个时间比如说20080101,应该得到20071231,不去计较数据验证。
2、解析字符串,String getStr1(String Str,String flag),第一个参数指要输入的字符串,第二个代表要拆分的标志,比如说333113223zz,得到的应该是‘11’、‘22’,‘zz’。不可以用spli。
第二个就是说输入两个参数,以第一个是字符处比如“123a321aaa44”,第二个参数输入a,要得到“123”、“32”、“44”
1、写一个函数 String getYesterday(String today){},只可以重要String基本类 不可以用data工具类
输入一个时间比如说20080101,应该得到20071231,不去计较数据验证。
2、解析字符串,String getStr1(String Str,String flag),第一个参数指要输入的字符串,第二个代表要拆分的标志,比如说333113223zz,得到的应该是‘11’、‘22’,‘zz’。不可以用spli。
第二个就是说输入两个参数,以第一个是字符处比如“123a321aaa44”,第二个参数输入a,要得到“123”、“32”、“44”
#9
2
public static String[] liu_split(String strInfo, String strSplit) {
int size = 0;
int index = 0;
do {
size++;
index++;
index = strInfo.indexOf(strSplit, index);
} while (index != -1);
String[] arrRtn = new String[size];
int startIndex = 0;
int endIndex = 0;
for (int i = 0; i < size; i++) {
endIndex = strInfo.indexOf(strSplit, startIndex);
if (endIndex == -1) {
arrRtn[i] = strInfo.substring(startIndex);
} else {
arrRtn[i] = strInfo.substring(startIndex, endIndex);
}
startIndex = endIndex + 1;
}
return arrRtn;
}
}
public static String[] liu_split(String strInfo, String strSplit) {
int size = 0;
int index = 0;
do {
size++;
index++;
index = strInfo.indexOf(strSplit, index);
} while (index != -1);
String[] arrRtn = new String[size];
int startIndex = 0;
int endIndex = 0;
for (int i = 0; i < size; i++) {
endIndex = strInfo.indexOf(strSplit, startIndex);
if (endIndex == -1) {
arrRtn[i] = strInfo.substring(startIndex);
} else {
arrRtn[i] = strInfo.substring(startIndex, endIndex);
}
startIndex = endIndex + 1;
}
return arrRtn;
}
}
#10
哪家单位的面试题?
#11
路过
#12
不可以用data工具类
这个是不是不允许时间date类?
第二个问题并不难。
使用截取字符串的方法搞定。多做两次判断。具体做法可以参考9楼。不过感觉9楼的方法还有待补充。
#13
public class Test {
public static void main(String[] args) {
String s = "20090301";
System.out.println(getYesterday(s));
}
public static String getYesterday(String yesterday) {
String returnStr = "";
int year = 0;
int month = 0;
int day = 0;
year = Integer.parseInt(yesterday.substring(0, 4));
month = Integer.parseInt(yesterday.substring(4, 6));
day = Integer.parseInt(yesterday.substring(6, 8));
if(day != 1) {
day = day - 1;
} else {
switch(month) {
case 5:
case 7:
case 10:
case 12:
month = month - 1;
day = 30;
break;
case 1:
year = year - 1;
month = 12;
day = 30;
break;
case 3:
if(isLeapYear(year)) {
month = month - 1;
day = 29;
break;
} else {
month = month - 1;
day = 28;
break;
}
default:
month = month - 1;
day = 31;
break;
}
}
returnStr = "" + year + String.format("%02d", month) + String.format("%02d", day);
return returnStr;
}
public static boolean isLeapYear(int year) {
boolean b = false;
if(year % 400 == 0) {
b = true;
}
if((year % 4 == 0) && (year % 100 != 0)) {
b = true;
}
return b;
}
}
#14
第二道
import java.util.Scanner;
public class Split {
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.print("str=");
String str = sc.nextLine();
System.out.print("flag=");
String flag = sc.nextLine();
String[] resultStr = getStr1(str,flag);
if(resultStr == null)
{
System.out.println(str);
}
else
{
for(String s:resultStr)
{
System.out.print(s+" ");
}
}
}
public static String[] getStr1(String str,String flag)
{
int index = 0;
int backIndex = 0;
//用来确定String数组的长度
int size = 0;
int resultStrIndex = 0;
do {
size++;
index++;
index = str.indexOf(flag, index);
} while (index != -1);
String[] resultStr = new String[size];
while((index=str.indexOf(flag,backIndex))!=-1)
{
if(backIndex==index)
{
backIndex++;
}
else
{
resultStr[resultStrIndex++] = str.substring(backIndex, index);
backIndex = index ;
}
}
resultStr[resultStrIndex] = str.substring(backIndex);
return resultStr;
}
}
import java.util.Scanner;
public class Split {
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.print("str=");
String str = sc.nextLine();
System.out.print("flag=");
String flag = sc.nextLine();
String[] resultStr = getStr1(str,flag);
if(resultStr == null)
{
System.out.println(str);
}
else
{
for(String s:resultStr)
{
System.out.print(s+" ");
}
}
}
public static String[] getStr1(String str,String flag)
{
int index = 0;
int backIndex = 0;
//用来确定String数组的长度
int size = 0;
int resultStrIndex = 0;
do {
size++;
index++;
index = str.indexOf(flag, index);
} while (index != -1);
String[] resultStr = new String[size];
while((index=str.indexOf(flag,backIndex))!=-1)
{
if(backIndex==index)
{
backIndex++;
}
else
{
resultStr[resultStrIndex++] = str.substring(backIndex, index);
backIndex = index ;
}
}
resultStr[resultStrIndex] = str.substring(backIndex);
return resultStr;
}
}
#15
第一题: 可以参考JS 中的 Calendar 把每个月的最大天数列出来! 2月另外算 就可以了!
第二题: 如果只能用subString 你就一个一个字符取!匹配flag 就是了! 把不是flag 的连续的 char 列出来就可以了!如果可以正则表达式可以 免得那么麻烦
第二题: 如果只能用subString 你就一个一个字符取!匹配flag 就是了! 把不是flag 的连续的 char 列出来就可以了!如果可以正则表达式可以 免得那么麻烦
#16
第一题13楼做得好啊
#17
拜13楼 晕死,当初我也是这个思路,就是没写这么明白,把闰年的判断加到switch里面了,有点乱糟糟的。
#18
第二题:
import java.util.ArrayList;
import java.util.Scanner;
public class SplitDemo {
public static void main(String[] args){
System.out.print("Input a string: ");
Scanner scan = new Scanner(System.in);
String s = new String();
if(scan.hasNext()){
s = scan.next();
}
System.out.print("Input a param: ");
Scanner scan1 = new Scanner(System.in);
String param = new String();
if(scan1.hasNext()){
param = scan1.next();
}
SplitDemo sd = new SplitDemo();
ArrayList list = sd.divString(s, param);
for(int i=0 ; i<list.size() ; i++){
System.out.print(list.get(i)+" ");
}
}
ArrayList divString(String s,String param){
ArrayList<String> list = new ArrayList<String>();
int index = 0;
CharSequence c = param.subSequence(0, param.length());
while(s.contains(c)){
String str = s.substring(0, s.indexOf(param, index));
list.add(str);
s = s.substring(s.indexOf(param, index)+param.length());
}
list.add(s);
return list;
}
}
#19
2题
有用正则的做法没哦
有用正则的做法没哦
#20
化简为繁是现在面试准则?第一题Calendar第二题正则都是很简单就能出来的吧
#21
想想