小小c#算法题 - 3 - 字符串语句反转
题目:反转语句。
如I love Beijing! 反转后输出 !Beijing love I
特点是指反转单词的顺序,其他字符(这个可以自己指定)不反转。且不能用内置函数,如Split和Substring。
分析:我们需要保证一个单词的字母组成顺序不变,其他的字符(这个自己指定)直接反转即可。基本思想是整个语句在入栈的时候对每个字符做具体分析处理即可,然后出栈输出。
由于这道题的结构很简单,就省去使用栈的过程,我们直接从句末开始分析每个字符并处理输出。我用了一个list来存储特殊字符,这些字符直接反转即可,其他的字符要做单词的组成部分处理。如,可直接输出,B则作为Beijing的组成部分,要特殊处理。
代码(c#):
2 {
3 List<char> chars = new List<char>();
4 chars.Add(' ');
5 chars.Add('.');
6 chars.Add('!');
7 chars.Add(',');
8 string str = "I love Shanghai, and I love Beijing!";
9 Console.WriteLine(Reverse(str, chars));
10 }
11
12 private static string Reverse(string str, List<char> chars)
13 {
14 string result = "";
15 string word = "";
16 char[] strArray = str.ToCharArray();
17 for (int i = strArray.Length - 1; i >= -1; i--)
18 {
19 if (i == -1)
20 {
21 result += word;
22 break;
23 }
24
25 if (chars.Contains(strArray[i]))
26 {
27 if (word != "")
28 {
29 result += word;
30 word = "";
31 }
32
33 result += strArray[i];
34 }
35 else
36 {
37 word = strArray[i] + word;
38 }
39 }
40
41 return result;
42 }
输出:
!Beijing love I and ,Shanghai love I
转载于:https://www.cnblogs.com/CSharpSPF/archive/2012/04/05/2433015.html
小小c#算法题 - 3 - 字符串语句反转相关推荐
- 通关算法题之 ⌈字符串⌋
字符串 171. Excel 表列序号 给你一个字符串 columnTitle ,表示 Excel 表格中的列名称,返回该列名称对应的列序号. A -> 1 B -> 2 C -> ...
- leetcode算法题--环绕字符串中唯一的子字符串★
原题链接:https://leetcode-cn.com/problems/unique-substrings-in-wraparound-string/ 思路是dp数组保存以26个字母为结尾的子字符 ...
- python【力扣LeetCode算法题库】7- 整数反转
整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 12 ...
- 算法题11 字符串的所有对称子串
题目 给定一个字符串,求其中所有的对称子串 分析 对称字符串无非两种情况,一是以1个字符为中心对称,如"abcba",一是完全对称,如"abccba".对于字符 ...
- 判断字符为空_算法题:字符串转换整数 (atoi)
题目描述 题解 分析 他人更优解 一.题目描述 二.题解 import math class Solution:def myAtoi(self,str):str = str.strip() #去除字符 ...
- 小小c#算法题 - 1 - 找出数组中满足条件的两个数
把一些东西放到网上,看的时候方便一些.代码可能有bug且不是最佳解决方案,仅供参考. 题目:输入一个按升序排序的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字. 要求时间复杂度是 ...
- 字节跳动2021年4月面试算法题库
本文汇总了牛客2021.4.1~2021.4.30 面经考到的Leetcode题目 最终的高频题榜单数据可以在CodeTop题库(https://codetop.cc)查询,支持按部门.岗位分类筛选. ...
- 详解反转字符串算法题
反转字符串,是经常出现的一种算法题,使用C/C++语言时,通常要求在原地进行反转. 最直接的反转整个字符串,使用的是一前一后双指针的方法 进阶的翻转,同要要涉及到两个指针,只是两个指针就行局部反转 进 ...
- 【必备算法】字符串(反转问题):LeetCode题 344. 反转字符串,541. 反转字符串 II,917. 仅仅反转字母
写在前面,反转数组的思路很简单,就是借助双指针不断将首尾相应位置的字符交换.Java模板如下: public void reverseArray(char[] arr) {int i = 0, j = ...
最新文章
- 【周鸿祎:当下AI技术并不完善,存四大“冰点”】
- python导入处理txt文件-python读取大文件踩过的坑——读取txt文件词向量
- 第四范式完成C+轮融资,估值约20亿美元
- SpringAOP概念
- Tomcat 6连接池配置
- Java笔记(11):Eclipse使用
- 多线程访问DataTable
- linux中vim中文显示乱码
- 你必须知道的.NET
- 下载各种百度文库以及豆丁网文章的简便方法
- 【遗传算法】基于改进的遗传和粒子群算法求解高斯烟羽模型气体扩散优化问题含Matlab源码
- 禅与维修摩托车的艺术_罗伯特-M-波西格
- react脚手架配置
- 无法复制到远程计算机,远程桌面无法复制粘贴【解答思路】
- 只需四天,从零开始选购笔记本电脑【转】【荐】
- failover机制
- .NET跨平台:在CentOS上编译dnx并运行ASP.NET 5示例程序
- 《MFQPPDCS》学习心得--TE---测试广度和深度
- Dart中Map的使用
- Linux内核深入理解定时器和时间管理(6):x86_64 相关的时钟源(kvm-clock,tsc,acpi_pm,hpet)
热门文章
- CMake学习使用(基于vscode)
- java bitset_Java BitSet and()方法与示例
- isatty_带有示例的Python File isatty()方法
- Python---利用蒙特.卡罗方法计算圆周率近似值
- 编写计算表达式(X-Y+25)/Z的值得程序,要求将其商和余数分别放在A、B单元中。(设X和Y是32位无符号数,A、B和Z是16位无符号数,不考虑溢出情况。)
- 计算机公式column,函数公式的左膀右臂:ROW、COLUMN函数知多少
- NX机制及绕过策略-ret2libc
- sql共享功能目录无法更改_大企业数据库服务首选!AliSQL这几大企业级功能你不可不知...
- python网页爬虫例子_Python网络爬虫 - 一个简单的爬虫例子
- [Golang]计算一个文件的MD5值