} public static void main(String[] args){ String s=" ab cd ef hij km "; go(s); } }
我用栈写的:import java.util.Stack;/** * 将一句话倒过来。"I am a student"变成"student a am I" * @author Owner * */ public class stringsub { public static String a(String str) { Stack s = new Stack(); //读取栈 Stack s2 = new Stack(); //输出栈 Stack tmp = new Stack(); //临时栈 StringBuffer sb = new StringBuffer(""); int i = 0; do { System.out.println(i); char c = str.charAt(i); if (c != ' ') { s.add(c); } if (c == ' ' || i == str.length()-1) { //单词结束或字符串结束 while (!s.empty()) { tmp.add(s.pop()); } while (!tmp.empty()) { //把读取到的单词再倒过来恢复正常顺序 sb.append(tmp.pop()); } s2.add(sb.toString()); //存放单词 if (c == ' ') { //如果是最后一个字符就不加空格了 s2.add(c); } sb = new StringBuffer(""); } i++; } while (i < str.length()); while (!s2.empty()) { sb.append(s2.pop()); } return sb.toString(); }
public static void main(String[] args) { String str = "I am a student"; System.out.println(a(str)); } }
如果说不能用字符串函数,那那个String就呆在那里动都动不了
还怎么转啊,又不像c那种有指针
以前也碰到这种题,觉得很无奈
期待高手解释~
随便写写,应该还有更好的思路!
String t;
String[] s <- 用空格split这个字符串
for i = 0 -> s.length / 2
t <- s[i]; s[i] <- s[length-i]; s[length-i] <- t;
length 都是String的函数吧,,
那把string包装成stringbuffer行不?
import java.util.regex.*;
public class MyRegex {
public static void main(String[] args) { String s="ab cd ef";
String str="";
String[] arr=new String[10];
int i=0,f=0;
Matcher m=Pattern.compile("\\w{2}").matcher(s);
//先用正则过滤,如果正则表达式也算字符串函数的话,我也没话说了
while (m.find()) {
arr[i]=m.group();//把过滤出来的放进数组里面
i++;
}
//用for循环倒着打印出来
for (int j = i-1; j >=0; j--) {
if(f!=0)
{
str+=" "+arr[j];
}
else
{
str=arr[j];
f++;
}
}
System.out.println(str);
}
}
split方法多简单啊
再从文件里读出来JAVA里可以
Scanner s=new Scanner("ab cd ef");
public class ReversePrintWord{
static void go(String src){
char[] buf=src.toCharArray();
for(int i=buf.length-1;i>=0;i--)
{
if(i==0){
int j=buf[0]==' '? i+1:i;
int flag=j;
for(;j<=buf.length-1&&buf[j]!=' ';j++)
System.out.print(buf[j]);
if(flag!=j) System.out.print(" ");
}
else if(buf[i]==' '){
int j=i+1;
for(;j<=buf.length-1&&buf[j]!=' ';j++)
System.out.print(buf[j]);
if(j!=i+1) System.out.print(" ");
}
}
}
public static void main(String[] args){
String s=" ab cd ef hij km ";
go(s);
}
}
* 将一句话倒过来。"I am a student"变成"student a am I"
* @author Owner
*
*/
public class stringsub {
public static String a(String str) {
Stack s = new Stack(); //读取栈
Stack s2 = new Stack(); //输出栈
Stack tmp = new Stack(); //临时栈
StringBuffer sb = new StringBuffer("");
int i = 0;
do {
System.out.println(i);
char c = str.charAt(i);
if (c != ' ') {
s.add(c);
}
if (c == ' ' || i == str.length()-1) { //单词结束或字符串结束
while (!s.empty()) {
tmp.add(s.pop());
}
while (!tmp.empty()) { //把读取到的单词再倒过来恢复正常顺序
sb.append(tmp.pop());
}
s2.add(sb.toString()); //存放单词
if (c == ' ') { //如果是最后一个字符就不加空格了
s2.add(c);
}
sb = new StringBuffer("");
}
i++;
} while (i < str.length());
while (!s2.empty()) {
sb.append(s2.pop());
}
return sb.toString();
}
public static void main(String[] args) {
String str = "I am a student";
System.out.println(a(str));
}
}