编程之法----面试和算法心得

第1章 字符串

  1.1 字符串的旋转

    输入一个英文句子,翻转句子中单词的顺序。要求单词内字符的顺序不变,句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如:若输入“I am a student.”,则输出“student. a am I”。

#include <stdio.h>

void ReverseString(char *s, int from, int to);

int main(int argc, const char * argv[]) {
    // insert code here...

    char s[] = "I am a student.";
    printf("%s\n", s);   // I am a student.

    int from = 0;
    int to = 0;

    for (int i = 0; i < sizeof(s); i ++) {
        if (s[i] == ‘ ‘ || s[i] == ‘\0‘) {
            to = i - 1;
            ReverseString(s, from, to);
            from = i + 1;
        }
    }
    printf("%s\n", s);  // I ma a .tneduts

    ReverseString(s, 0, sizeof(s) - 2);
    printf("%s\n", s);   // student. a am I

    return 0;
}

void ReverseString(char *s, int from, int to) {
    while (from < to) {
        char t = s[from];
        s[from] = s[to];
        s[to] = t;
        from ++;
        to --;
    }
}
时间: 2024-12-16 14:29:28

编程之法----面试和算法心得的相关文章

我的新书《编程之法:面试和算法心得》已经上市

我的新书<编程之法:面试和算法心得>已经上市 经过一天一天.一月一月.一年一年漫长的等待,我的新书终于上架开卖了! 异步社区:http://www.epubit.com.cn/book/details/4051.互动出版网(7.7折且包邮且移动端首单再减5元):http://product.china-pub.com/4880112.京东预售:http://item.jd.com/11786791.html,很快就能抢购. 1 新书上市7天 10月13日晚上,拿到<编程之法>第一本

编程之法:面试和算法心得(寻找和为定值的多个数)

内容全部来自编程之法:面试和算法心得一书,实现是自己写的使用的是java 题目描述 输入两个整数n和sum,从数列1,2,3.......n 中随意取几个数,使其和等于sum,要求将其中所有的可能组合列出来. 分析与解法 解法一 注意到取n,和不取n个区别即可,考虑是否取第n个数的策略,可以转化为一个只和前n-1个数相关的问题. 如果取第n个数,那么问题就转化为"取前n-1个数使得它们的和为sum-n",对应的代码语句就是sumOfkNumber(sum - n, n - 1): 如果

编程之法:面试和算法心得(荷兰国旗)

内容全部来自编程之法:面试和算法心得一书,实现是自己写的使用的是java 题目描述 拿破仑席卷欧洲大陆之后,代表自由,平等,博爱的竖色三色旗也风靡一时.荷兰国旗就是一面三色旗(只不过是横向的),自上而下为红白蓝三色. 该问题本身是关于三色球排序和分类的,由荷兰科学家Dijkstra提出.由于问题中的三色小球有序排列后正好分为三类,Dijkstra就想象成他母国的国旗,于是问题也就被命名为荷兰旗问题(Dutch National Flag Problem). 下面是问题的正规描述: 现有n个红白蓝

程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦

程序员面试.算法研究.编程艺术.红黑树.数据挖掘5大系列集锦

此文记录了我从研二下学期到研三上学期的找工历程,包括百度、腾讯、网易、移动、电信、华为、中兴、IBM八家企业的面试总结和心得--转

感谢电子通讯工程的研究生学长为大家整理了这么全面的求职总结,希望进入通信公司和互联网公司做非技术类岗位的学弟学妹们千万不要错过哦~ ---------------------------原文分割线-------------------------- 此文记录了我从研二下学期到研三上学期的找工历程,包括百度.腾讯.网易.移动.电信.华为.中兴.IBM八家企业的面试总结和心得,希望能够帮助到正在找工的朋友和师弟师妹们,并纪念找工这段怀揣着希望和梦想,伴随着紧张和压力,同时令我受益匪浅的日子. (本文

面试高级算法梳理笔记

面试高级算法梳理笔记 1.1 说明 本篇为<挑战程序设计竞赛(第2版)>读书笔记系列,旨在: 梳理算法逻辑 探索优化思路 深入代码细节 1.2 目录 原文首发于个人博客Jennica.Space,按算法难度划分为初中高三个级别,详细目录及链接如下: 初级篇 穷竭搜索 贪心 动态规划 数据结构 图论 数论 中级篇 二分搜索 常用技巧 数据结构(二) 动态规划(二) 网络流 计算几何 高级篇 数论(二) 博弈论 图论(二) 常用技巧(二) 智慧搜索 分治 字符串 1.3 题解 配套习题及详解同步发

编程实现哈希存储算法的简单实例

编程实现哈希存储算法的简单实现实例. 通过编写一个简单的哈希实例来加强对哈希算法的理解.下面实例包括存储与查找算法.拉链法解决冲突问题. 如果时间长了对哈希算法的理论知识不够了解,可以先阅读前面转载的两篇文档: 字符串哈希到整数函数,算法:http://blog.csdn.net/hzhsan/article/details/25552153 Hash算法冲突解决方法分析:http://blog.csdn.net/hzhsan/article/details/25555127 // 假设现在要实

自学Python3.6-算法 二分查找算法

自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Python3.6-算法 二分查找算法 .... 原文地址:https://www.cnblogs.com/yaoyaojcy/p/10596912.html

回溯法 -数据结构与算法

1.回溯法算法思想: 定义: 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”. 1.回溯法适用:有许多问题,当需要找出它的解集(全部解)或者要求回答什么解是满足某些约束条件的最优解时,往往要使用回溯法. 2.有组织的穷举式搜索:回溯法的基本做法是搜索或者有的组织穷尽搜索.它能避免搜索所有的可能性.即避免不必要的搜索.这种方