热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

iOS算法面试题(字符串逆序输出、二叉树、归并排序)~demo

联系人:石虎QQ:1224614774昵称:嗡嘛呢叭咪哄一、字符串逆序输出1、实现一个字符串“howareyou”的逆序输出(编程语言

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄


一、字符串逆序输出

1、实现一个字符串“how are you”的逆序输出(编程语言不限)。如给定字符串为“hello world”,输出结果应当为“world hello”


    [cpp] view plain copy

    int spliterFunc(char *p) {

        char c[100][100];

        int i =0;

        int j =0;

        

        while (*p !='\0') {

            if (*p ==' ') {

                i++;

                j = 0;

            } else {

                c[i][j] = *p;

                j++;

            }

            p++;

        }

        

        for (int k = i; k >=0; k--) {

            printf("%s", c[k]);

            if (k >0) {

                printf(" ");

            } else {

                printf("\n");

            }

        }    return0;

    }


二、二叉树


/**

    二叉树的先序遍历为FBACDEGH,中序遍历为:ABDCEFGH,请写出这个二叉树的后序遍历结果。

    

    ADECBHGF

    先序+中序遍历还原二叉树:先序遍历是:ABDEGCFH中序遍历是:DBGEACHF

    首先从先序得到第一个为A,就是二叉树的根,回到中序,可以将其分为三部分:    

    左子树的中序序列DBGE,根A,右子树的中序序列CHF   

    接着将左子树的序列回到先序可以得到B为根,这样回到左子树的中序再次将左子树分割为三部分:   

    左子树的左子树D,左子树的根B,左子树的右子树GE

    同样地,可以得到右子树的根为C

    类似地将右子树分割为根C,右子树的右子树HF,注意其左子树为空

    如果只有一个就是叶子不用再进行了,刚才的GEHF再次这样运作,就可以将二叉树还原了。

    

*/


三、归并排序

    

    void merge(int sourceArr[],int tempArr[], int startIndex,int midIndex, int endIndex) {

        

        int i = startIndex;        

        int j = midIndex +1;       

        int k = startIndex;      

        while (i != midIndex +1 && j != endIndex + 1) {

            

            if (sourceArr[i] >= sourceArr[j]) {               

                tempArr[k++] = sourceArr[j++];                

            } else {                

                tempArr[k++] = sourceArr[i++];                

            }            

        }

        

        while (i != midIndex +1) {            

            tempArr[k++] = sourceArr[i++];            

        }

        

        while (j != endIndex +1) {            

            tempArr[k++] = sourceArr[j++];            

        }

        

        for (i = startIndex; i <= endIndex; i++) {            

            sourceArr[i] = tempArr[i];           

        }       

    }

    

    void sort(int souceArr[],int tempArr[], int startIndex,int endIndex) {

        

        int midIndex;

        

        if (startIndex

            

            midIndex = (startIndex + endIndex) / 2;            

            sort(souceArr, tempArr, startIndex, midIndex);           

            sort(souceArr, tempArr, midIndex +1, endIndex);            

            merge(souceArr, tempArr, startIndex, midIndex, endIndex);            

        }        

    }

    

    

    int main(int argc,const char * argv[]) {

        

        int numArr[10] = {86,37, 56,29, 92,73, 15,63, 30,8};        

        int tempArr[10];        

        sort(numArr, tempArr, 0,9);

        

        for (int i =0; i <10; i++) {            

            printf("%d, ", numArr[i]);            

        }       

        printf("\n");

        

        return0;

        

    }


谢谢!!!



推荐阅读
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • Java高级工程师学习路径及面试准备指南
    本文基于一位朋友的PDF面试经验整理,涵盖了Java高级工程师所需掌握的核心知识点,包括数据结构与算法、计算机网络、数据库、操作系统等多个方面,并提供了详细的参考资料和学习建议。 ... [详细]
  • Linux内核中的内存反碎片技术解析
    本文深入探讨了Linux内核中实现的内存反碎片技术,包括其历史发展、关键概念如虚拟可移动区域以及具体的内存碎片整理策略。旨在为开发者提供全面的技术理解。 ... [详细]
  • 通过两幅详细的思维导图,全面解析Spring框架中应用的设计模式及其核心编程理念。 ... [详细]
  • 苹果官方在线商店(中国)提供了关于MacBook Pro的详细信息。通过先进的工厂校准技术,新MacBook Pro能够精确地适应多种色彩空间标准,如sRGB、BT.601、BT.709及P3-ST.2084(HDR),确保用户获得最佳视觉效果。 ... [详细]
  • iOS如何实现手势
    这篇文章主要为大家展示了“iOS如何实现手势”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“iOS ... [详细]
  • 本文介绍了用户界面(User Interface, UI)的基本概念,以及在iOS应用程序中UIView及其子类的重要性和使用方式。文章详细探讨了UIView如何作为用户交互的核心组件,以及它与其他UI控件和业务逻辑的关系。 ... [详细]
  • Python网络编程:深入探讨TCP粘包问题及解决方案
    本文详细探讨了TCP协议下的粘包现象及其产生的原因,并提供了通过自定义报头解决粘包问题的具体实现方案。同时,对比了TCP与UDP协议在数据传输上的不同特性。 ... [详细]
  • 汇编语言标识符和表达式(四)(表达式与符号定义语句)
    7、表达式表达式是程序设计课程里的一个重要的基本概念,它可由运算符、操作符、括号、常量和一些符号连在一起的式子。在汇编语言中,表达式分为:数值表达式和地址表达式。(1)进制伪指令R ... [详细]
  • 本文介绍了使用Python和C语言编写程序来计算一个给定数值的平方根的方法。通过迭代算法,我们能够精确地得到所需的结果。 ... [详细]
  • 本文提供了一个详尽的前端开发资源列表,涵盖了从基础入门到高级应用的各个方面,包括HTML5、CSS3、JavaScript框架及库、移动开发、API接口、工具与插件等。 ... [详细]
  • 深入理解iOS中的链式编程:以Masonry为例
    本文通过介绍Masonry这一轻量级布局框架,探讨链式编程在iOS开发中的应用。Masonry不仅简化了Auto Layout的使用,还提高了代码的可读性和维护性。 ... [详细]
  • Linux系统中的USB驱动架构
    USB系统采用了树状拓扑结构,其主机端和设备端分别配置了主机控制器(Host Controller)和USB设备控制器(USB Device Controller)。主机控制器负责整个USB系统的通信调度,确保数据的有效传输。 ... [详细]
  • 初探Hadoop:第一章概览
    本文深入探讨了《Hadoop》第一章的内容,重点介绍了Hadoop的基本概念及其如何解决大数据处理中的关键挑战。 ... [详细]
  • 个人博客:打开链接依赖倒置原则定义依赖倒置原则(DependenceInversionPrinciple,DIP)定义如下:Highlevelmo ... [详细]
author-avatar
道士也调情
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有