原文:
Write code to reverse a C-Style String. (C-String means that “abcd” is represented as five characters, including the null character.)
译文:
写代码翻转一个C风格的字符串。(C风格的意思是"abcd"需要用5个字符来表示,包含末尾的 结束字符)
写了多个字符串翻转的方法:
package Arrays_Strings;
import java.util.Stack;
public class S1_2 {
// 首尾位置交换
public static String reverse1(String s) {
char[] cc = s.toCharArray();
int len = s.length();
for(int i=0; i<len/2; i++) {
char tmp = cc[i];
cc[i] = cc[len-1-i];
cc[len-1-i] = tmp;
}
return new String(cc);
}
// Java库函数
public static String reverse2(String s) {
return new StringBuilder(s).reverse().toString();
}
// 反向添加
public static String reverse3(String s) {
String ret = "";
for(int i=s.length()-1; i>=0; i--) {
ret += s.charAt(i);
}
return ret;
}
// 递归1
public static String reverse4(String s) {
StringBuilder ret = new StringBuilder();
rec(new StringBuilder(s), ret, 0);
return ret.toString();
}
// 不能用String作为param,否则无法改变String的值,建议一律采用StringBuilder
public static void rec(StringBuilder src, StringBuilder dest, int pos) {
if(pos == src.length()) {
return;
}
rec(src, dest, pos+1);
dest.append(src.charAt(pos));
}
// 递归2
public static String reverse5(String s) {
if(s.length() <= 1) {
return s;
}
return reverse5(s.substring(1)) + s.charAt(0);
}
// =========================================
// 输入“I am a student.”,则输出“student. a am I”
public static String reverseSentence1(String s) {
// 翻转“I am a student.”中所有字符得到“.tneduts a ma I”,
// 再翻转每个单词中字符的顺序得到“students. a am I”
String reversedSentence = reverse1(s);
String[] ss = reversedSentence.split(" ");
String ret = "";
for(int i=0; i<ss.length; i++) {
ret += reverse1(ss[i]);
if(i != ss.length-1) {
ret += " ";
}
}
return ret;
}
// 用一个辅助栈
public static String reverseSentence2(String s) {
Stack<Character> stack = new Stack<Character>();
String ret = "";
// 先将整句话倒着进栈
for(int i=s.length()-1; i>=0; i--) {
char c = s.charAt(i);
if(c == ' '){ // 进栈前检查是否为" ",如果为TRUE,先将依次POP()
while( !stack.isEmpty() ) {
ret += stack.pop();
}
ret += " ";
} else{
stack.push(c);
}
}
// 栈内可能还有剩下的字符
while( !stack.isEmpty() ) {
ret += stack.pop();
}
return ret;
}
public static void main(String[] args) {
String s = "abc";
System.out.println(reverse1(s));
System.out.println(reverse2(s));
System.out.println(reverse3(s));
System.out.println(reverse4(s));
System.out.println(reverse5(s));
s = "I am a student.";
System.out.println(reverseSentence1(s));
System.out.println(reverseSentence2(s));
}
}
分享到:
相关推荐
Arduino项目开发 Control_Arrays_Arrays.pdf Arduino项目开发 Control_Arrays_Arrays.pdf Arduino项目开发 Control_Arrays_Arrays.pdf Arduino项目开发 Control_Arrays_Arrays.pdf Arduino项目开发 Control_Arrays_...
07_Multidimensional_Arrays_pdf_
Electronically Scanned Arrays_MATLAB Modeling and Simulation 英文高清书籍
day08_17_Arrays练习_字符串倒序排列
Calculate the mutual impedance in an infinite phased arrays.
alx-low_level_programming0x00-hello_world 使用gcc编译C程序以贝蒂风格编写...0x05-pointers_arrays_strings 指针数组弦乐0x06-pointers_arrays_strings 更多的指针将一个字符串数组。0x07-pointers_arrays_strings
0x06-pointers_arrays_strings:将piointer,数组和字符串用于make string函数。 0x07-pointers_arrays_strings:甚至更多的指针,数组和字符串。 0x08-递归:递归。 0x09-static_libraries静态库。 0x0A-argc
Ayush_Arrays_objects_closures:Ayush_Arrays_objects_closures
A basic c# example code for beginners 2.
multiserial arduino file zip
multidimensional array is an antenna array which have a minimum of 2 DIMENSIONAL
Range-Angle Dependent Transmit Beampattern synthesis for linear frequency diverse arrays
关于动态数组的底层实现,采用动态扩容包括增添改查操作
combining scheme for adaptive antenna arrays to combat noise, fading, and to a certain degree, cochannel interference. However, it requires estimation of the spatial signature (i.e., the channel gain ...
设计一矩形栅格的相控阵天线方向图及其仿真;其中包含两个文件(分别是main_antenna_gain和 antenna_gain),其中antenna是调用函数,主要计算方向图增益
This is done through smart-antenna arrays and the associated adaptive beam-forming algorithms. Smart-antenna systems provide opportunities for higher system capacity and improved quality of service ...
国外经典论文,ieee会员论文关于波导缝隙天线理论的详细论证
matlab开发的阵列天线设计工具,可以设计均匀/非均匀、一维/多维等阵列,可画出方向图
利用粒子群算法对直线阵的权系数进行优化,这里只是对相位进行加权,但是程序有很好的宽展功能
编写程序,可以实现m*n矩阵和n*p矩阵相乘。m,n,p均小于10,矩阵元素为整数。 分析: 首先我们可以根据题意写出函数头。可以定为void MatrixMutiply(int m,int n,int p,long lMatrix1[MAX][MAX],long lMatrix2[MAX]...