字符串的反转输出

这也是面试题中常考的一道。我们就以一个包含了全部26个英文字母,同时又具有完整含义的最短句子作为例子来完成解答。先来看一下这个句子:

引用

A quick brown fox jumps over the lazy dog.(一只轻巧的棕色狐狸从那条懒狗身上跳了过去。)

最常用的方式就是反向取出每个位置的字符,然后依次将它们输出到控制台:

public class StringReverse {

public static void main(String[] args) {

// 原始字符串

String s = "A quick brown fox jumps over the lazy dog.";

System.out.println("原始的字符串:" + s);

System.out.print("反转后字符串:");

for (int i = s.length(); i > 0; i--) {

System.out.print(s.charAt(i - 1));

}

// 也可以转换成数组后再反转,不过有点多此一举

char[] data = s.toCharArray();

System.out.println();

System.out.print("反转后字符串:");

for (int i = data.length; i > 0; i--) {

System.out.print(data[i - 1]);

}

}

}

public class StringReverse {

public static void main(String[] args) {

// 原始字符串

String s = "A quick brown fox jumps over the lazy dog.";

System.out.println("原始的字符串:" + s);

System.out.print("反转后字符串:");

for (int i = s.length(); i > 0; i--) {

System.out.print(s.charAt(i - 1));

// 也可以转换成数组后再反转,不过有点多此一举

char[] data = s.toCharArray();

System.out.println();

System.out.print("反转后字符串:");

for (int i = data.length; i > 0; i--) {

System.out.print(data[i - 1]);

}

}

}

运行结果:

1、原始的字符串:A quick brown fox jumps over the lazy dog.

2、反转后字符串:.god yzal eht revo spmuj xof nworb kciuq A

3、反转后字符串:.god yzal eht revo spmuj xof nworb kciuq A

以上两种方式虽然常用,但却不是最简单的方式,更简单的是使用现有的方法:

Java代码

public class StringReverse {

public static void main(String[] args) {

// 原始字符串

String s = "A quick brown fox jumps over the lazy dog.";

System.out.println("原始的字符串:" + s);

System.out.print("反转后字符串:");

StringBuffer buff = new StringBuffer(s);

// java.lang.StringBuffer类的reverse()方法可以将字符串反转

System.out.println(buff.reverse().toString());

}

}

运行结果:

1、原始的字符串:A quick brown fox jumps over the lazy dog.

2、反转后字符串:.god yzal eht revo spmuj xof nworb kciuq A

编辑特别推荐:

a

原题:

以单词为最小单位翻转字符串

Write the function String reverseStringWordByWord(String input) that reverses

a string word by word. For instance,

reverseStringWordByWord("The house is blue") --> "blue is house The"

reverseStringWordByWord("Zed is dead") --> "dead is Zed"

reverseStringWordByWord("All-in-one") --> "All-in-one"

面试系列4种的实现,比较费空间,因为多申请了一段空间来保存结果。

在看了其他高手的实现后,发现可以不用申请空间,并且循环的次数更少,也可以实现相同的效果。

大体思路是:

原字符串: The house is blue

先翻转整个字符串-> eulb si esuoh ehT

再翻转单个单词。

代码:

/********************************************************************

created: 2006/06/16

filename: C:\Documents and Settings\Administrator\桌面\flwo\reverse2.c

file path: C:\Documents and Settings\Administrator\桌面\flwo

file base: reverse

file ext: c

author: A.TNG

version: 0.0.1

purpose: 以单词为最小单位翻转字符串-2 优化版

Write the function String reverseStringWordByWord(String input)

that reverses a string word by word. For instance,

reverseStringWordByWord("The house is blue") --> "blue is house The"

reverseStringWordByWord("Zed is dead") --> "dead is Zed"

reverseStringWordByWord("All-in-one") --> "All-in-one"

参考其他高手的思路:

先翻转整个字符串-> eulb si esuoh ehT

再翻转单个单词。

*********************************************************************/

#include

#include

#include

#define REVERSE_WORD(p1, p2) while (p1 <= p2) { char ch; ch = *p1; *p1 = *p2; *p2 = ch; p1++; p2--; }

/*

* name: reverse_src_word_by_word

* params:

* des [out] 输出字符串, des 指向实现申请的空间

* src [in] 输入字符串,需要处理的字符串

* return:

* 处理完成后的 des 指针

* notes:

* 以单词为最下单位翻转字符串

* 优化: 先翻转整个字符串,再翻转单个单词

*

* author: A.TNG 2006/06/16 10:37

*/

char * reverse_str_word_by_word2(char *src)

{

char *p1, *p2;

int n_src_len;

if (NULL == src)

return NULL;

/* 先把整个字符串翻转一次 */

n_src_len = strlen(src);

p1 = src; p2 = src + n_src_len - 1;

REVERSE_WORD(p1, p2);

#if 0

while (p1 <= p2)

{

/* 交换头字符和尾字符 */

char ch;

ch = *p1; *p1 = *p2; *p2 = ch;

p1++; p2--;

}

#endif

/* 再翻转单个单词 */

p1 = src; p2 = p1;

while ('\0' != *p2)

{

if (' ' == *p2)

{

char *p;

p = p2 - 1;

REVERSE_WORD(p1, p);

#if 0

while (p1 <= p)

{

char ch;

ch = *p1; *p1 = *p; *p = ch;

p1++; p--;

}

#endif

p2++;

p1 = p2;

}

else

{

p2++;

}

}

/* 翻转最后一个单词 */

p2--;

REVERSE_WORD(p1, p2);

#if 0

while (p1 <= p2)

{

char ch;

ch = *p1; *p1 = *p2; *p2 = ch;

p1++; p2--;

}

#endif

return src;

}

/*

* name: main

* params:

* none

* return:

* none

* notes:

* none

*

* author: A.TNG 2006/06/16 10:37

java字母反过来_java之字母反转~~ - Plight - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...相关推荐

  1. java对import语句_Java的import语句 - 不积跬步,无以至千里 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    51Testing软件测试网]2S+K"rZ/bP*j 程序员可以使用两种import语句:51Testing软件测试网o$UN5EQh 3oZc4n f9P"CoQ;T]0单类型 ...

  2. java 测试排序_java排序的几种方法 - 善待自己的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    冒泡:publicclassBubbleSort { publicstaticvoidbubbleSort(int[] array) { intlength = array.length -1; fo ...

  3. Java帧率,android应用性能优化之帧率 - hellominefriend的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    转自:http://www.cnblogs.com/myzh/archive/2013/03/17/2965225.html 1.纵观全局 对于顺畅度的分析,首先要知道一个整体情况,是局部,还是全局, ...

  4. java自定义findbugs规则,定制 findbugs规则 - 阿里巴巴一个测试架构师 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    这类文章极少,字节码操作需要对becl库及jvm字节码操作有一定常识.参考: http://blog.csdn.net/lywybo/archive/2010/03/01/5335748.aspx i ...

  5. java软件测试经典案例,java语言编程案例 - Mrsjjl的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    1.编程实现:二分搜索算法 解答: public class SearchTest { /** 被搜索数据的大小 */ private static final int size = 5000000; ...

  6. java 过滤中文_Java 过滤字母、数字和中文 正则表达式

    [java]代码库/** * @Title:FilterStr.java * @Package:com.you.dao * @Description:Java中过滤数字.字母和中文 * @Author ...

  7. java 随机字母数字_Java生成字母和数字组成的随机字符串

    在业务开发过程中经常遇到生成随机字符串,用于密钥.密码.口令或其他标识使用. 下面就介绍一下通过Java程序生成这些随机字符串的方法. 1. 随机生成n位由字母或数字组成的字符串 public sta ...

  8. java 数字 字母 中文_java中英文字母、数字、中文所占字节数

    先了解下基本的单位: 1.比特(bit)即一个二进制位,例如100011就是6比特. 2.字节(byte),这是计算机中数据类型最基本的单位了,8bit组成1byte. java要确定每种基本类型所占 ...

  9. java 输出字母图形_java打印字母菱形,怎么打!!!

    哈哈!终于明白怎么打出字母菱形了.下面是代码请高手指点一二,呵呵!charstart='A';//开始的字符System.out.print("请输入三角形的行高:");intnu ...

最新文章

  1. 一步一步学习SignalR进行实时通信_6_案例
  2. CRMEB微信商城源码下载
  3. (软件工程复习核心重点)第二章可行性研究-第四节:数据字典
  4. 大数据学习笔记48:Flume Sources(Flume源)
  5. python django 快速实现注册,登录,注销
  6. 学习 jQuery -2 document 对象的 ready 事件
  7. hive数据去重测试
  8. 【bug解决】No OpKernel was registered to support Op 'CudnnRNN' with these attrs.
  9. 论文 | 研究方法 —— 结构方程
  10. java 线程 block_JAVA线程的BLOCK状态实例分析
  11. 【正点原子STM32连载】 第六十四章 综合测试实验摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  12. 我叫MT4怎么在电脑上玩?我叫MT4手游安卓模拟器电脑版操作教程
  13. 在软件测试面试中,碰到这些「送命题」,大牛教你一招应对
  14. 升压电路(Boost)的设计原理、参数计算及MATLAB仿真
  15. r720换固态硬盘后如何重装系统_电脑安装完固态硬盘后如何重装系统?
  16. 汇编指令及其英文全称
  17. 阿里云服务器挖矿程序解决流程
  18. JointJS入门实例01-在JOINTJS元素中使用HTML
  19. 如何翻译DeepFaceLab(DeepFake)的交互式合成器
  20. Mysql关于处理emoji表情包报错问题的处理

热门文章

  1. 如何让PHP运行更高效
  2. 这公司需要再利用CPU热能:于是淘汰i7换AMD Ryzen
  3. javascript正则表达式总结(test|match|search|replace|split|exec)
  4. Avaya以1亿美元向Extreme销售网络业务
  5. SQL Server修改表结构后批量更新所有视图
  6. CSS 实现加载动画之四-圆点旋转
  7. 个人管理 - 程序员的四个阶段
  8. linux fedora kde桌面设置全局显示字体大小
  9. Hadoop MapReduce指定yarn队列: -Dmapreduce.job.queuename
  10. win10 + mac双系统安装常用工具