段落以单词为单位按行反序
// // 以单词为单位进行反序,按行进行,标点符合不反序. 例如: // "ABC DEF GH.\nabc def gh."反序为"GH. DEF ABC\ngh. def abc" // // 方法:先将句子中字母倒置,然后将每个单词字母倒置,如下. // .HG FED CBA\n.hg fed cba // GH. DEF ABC\ngh. def abc // #include <cstdlib> #include <cassert> #include <iostream> // // 将单词字母倒置. // void reverse_word( char *word, size_t length) { assert (NULL != word); char ch; for ( size_t i = 0; i < length / 2; ++i) { ch = word[i]; word[i] = word[length - 1 - i]; word[length - 1 - i] = ch; } } // // 将句子所有字母倒置. // void reverse_sentence( char *sentence, size_t length) { size_t begin = 0; reverse_word(sentence, length); for ( size_t offset = 0; offset < length; ++offset) { if ( ' ' == sentence[offset]) { reverse_word(sentence + begin, offset - begin); begin = offset + 1; } } reverse_word(sentence + begin, length - begin); } // // 将段落中所有单词的字母倒置. // void reverse_section( char *section) { assert (NULL != section); // 将各个句子单词倒置. for ( size_t begin = 0, offset = 0; '\0' != section[offset]; ++offset) { if ( '\n' == section[offset] || '\0' == section[offset]) { reverse_sentence(section + begin, offset - begin); begin = offset + 1; } } } int main( void ) { char section[] = "ABC DEF GH.\nabc def gh." ; reverse_section(section); std::cout << section << std::endl; return EXIT_SUCCESS; } |
分类:
ACM
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?