笔试题目“翻转字符串”的实现

看到一个简单的题目:http://www.cnblogs.com/rond/archive/2012/05/17/2505997.html#2781431

//写一个函数,将字符串翻转,翻转方式如下:“I am a student”反转成“student a am I”,不借助任何库函数。

适合我这种新手,然后用 c# 写了一下。。

 

这个实现挺简单的,就是用了for循环来实现而已。

笔试题目“翻转字符串”的实现
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace 笔试题目
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             //写一个函数,将字符串翻转,翻转方式如下:“I am a student”反转成“student a am I”,不借助任何库函数。
14 
15             string str = "I am a student";
16             //string str = "you are a woman";
17             int length = 0;//总长度
18             //获取总长度
19             foreach (char c in str)
20             {
21                 length++;
22             }
23             Console.WriteLine("Original:" + str);
24             Console.Write("Reverse: ");
25 
26             int curPos = length;//当前位置在最后
27             for (int i = length - 1; i >= 0; i--)
28             {
29                 if (i==0 || str[i] ==  )//遇到空格时输出,和对第一个单词特别处理
30                 {
31                     for (int j = i; j < curPos; j++)
32                     {
33                         if (str[j] !=  )
34                         {
35                             Console.Write(str[j]);
36                         }
37                     }
38                     if (i != 0)//第一个单词最后不用输出空格
39                     {
40                         Console.Write( );
41                     }
42                     curPos = i;//当前位置为当前空格位置
43                 }
44             }
45             Console.ReadKey();
46         }
47     }
48 }
View Code

 

 

然后也用栈做了一下,个人觉得用栈更加方便,从头开始检索到最后,遇到单词进栈就可以了。

笔试题目“翻转字符串”的实现
  1 using System;
  2 
  3 namespace 笔试题目
  4 {
  5     class Program
  6     {
  7         /// <summary>
  8         /// 单词类
  9         /// </summary>
 10         public class Word
 11         {
 12             /// <summary>
 13             /// 内容
 14             /// </summary>
 15             public string Data { get; set; }
 16             /// <summary>
 17             /// 链接下一个
 18             /// </summary>
 19             public Word next { get; set; }
 20         }
 21 
 22         class MyStack
 23         {
 24             Word head = null;//头节点
 25 
 26             /// <summary>
 27             /// 入栈
 28             /// </summary>
 29             /// <param name="word">单词字符串</param>
 30             public void Push(string word)
 31             {
 32                 if (head == null)//当前栈没有数据
 33                 {
 34                     head = new Word();
 35                     head.Data = word;
 36                     head.next = null;
 37                 }
 38                 else
 39                 {
 40                     Word node = new Word();//一个节点
 41                     node.Data = word;
 42                     node.next = head;
 43                     head = node;
 44                 }
 45             }
 46 
 47             /// <summary>
 48             /// 出栈
 49             /// </summary>
 50             /// <returns></returns>
 51             public string Pop()
 52             {
 53                 if (head != null)
 54                 {
 55                     string data = head.Data;
 56                     head = head.next;
 57                     return data;
 58                 }
 59                 else
 60                 {
 61                     return null;
 62                 }
 63             }
 64 
 65             /// <summary>
 66             /// 是否有数据
 67             /// </summary>
 68             /// <returns></returns>
 69             public bool HasData()
 70             {
 71                 return head == null ? false : true;
 72             }
 73         }
 74 
 75         static void Main(string[] args)
 76         {
 77             //写一个函数,将字符串翻转,翻转方式如下:“I am a student”反转成“student a am I”,不借助任何库函数。
 78 
 79             //string str = "I am a student";
 80             string str = "you are a woman";
 81             Console.WriteLine("Original:" + str);
 82             Console.Write("Reverse :");
 83 
 84             MyStack stack = new MyStack();
 85             string word = "";
 86             foreach (char c in str)
 87             {
 88                 if (c !=  )
 89                 {
 90                     word += c.ToString();
 91                 }
 92                 else//当前字符为空格
 93                 {
 94                     if (word != "")
 95                     {
 96                         stack.Push( +word);
 97                     }
 98                     word = "";
 99                 }
100             }
101 
102             if (word != "")//最后一个单词
103             {
104                 stack.Push(word);
105             }
106 
107             while(stack.HasData())
108             {
109                 Console.Write(stack.Pop());
110             }
111             Console.ReadKey();
112         }
113     }
114 }
View Code

笔试题目“翻转字符串”的实现

上一篇:如何查看shell内置命令?


下一篇:lucene正向索引(续)——域(Field)的元数据信息在.fnm里,在倒排表里,利用跳跃表,有利于大大提高搜索速度。