这是一个我面试某公司的算法题目:对一个字符数组进行排序,根据给定的字符,大于它的,放在数组的左边,小于它的,放在数组的右边,且数组中的元素之间的相对位置要保持不变。...

这个题目面试的时候,用的是最简单,但多开辟内存的方法,后来自己想想,在原数组进行操作的方法:

        private static string GreaterLeftLessRight(string str, char c){char[] array = str.ToCharArray();int comparingIndex = str.IndexOf(c);int i = 0;int j = comparingIndex + 1;int lastExchangePositionInLeft = -1;int lastExchangePositionInRight = -1;int rightestIndex = comparingIndex;char tmp;while (i < comparingIndex || j < array.Length){int shouldExchangeInLeft = -1;int shouldExchangeInRight = -1;while (i < comparingIndex){if (array[i] < c){shouldExchangeInLeft = i;i++;break;}else{i++;}}while (j < array.Length){if (array[j] >= c){shouldExchangeInRight = j;j++;break;}else{j++;}}if (shouldExchangeInLeft != -1 && shouldExchangeInRight != -1 && array[shouldExchangeInRight] != c){ExchangeCharacterInArray(array, shouldExchangeInLeft, shouldExchangeInRight);lastExchangePositionInLeft = shouldExchangeInLeft;lastExchangePositionInRight = shouldExchangeInRight;}else if (shouldExchangeInLeft != -1 && shouldExchangeInRight == -1){tmp = array[shouldExchangeInLeft];int moveEndIndex = lastExchangePositionInRight == -1 ? array.Length - 1 : lastExchangePositionInRight;MoveCharacterInArray(array, shouldExchangeInLeft, moveEndIndex, tmp);i--;comparingIndex--;}else if (shouldExchangeInLeft != -1 && array[shouldExchangeInRight] == c){array[shouldExchangeInRight] = array[shouldExchangeInLeft];MoveCharacterInArray(array, shouldExchangeInLeft, rightestIndex, c);i--;comparingIndex--;}else if (shouldExchangeInLeft == -1 && shouldExchangeInRight != -1 && array[shouldExchangeInRight] != c){tmp = array[shouldExchangeInRight];MoveCharacterInArray(array, shouldExchangeInRight, comparingIndex, tmp);comparingIndex++;rightestIndex = comparingIndex;}else if (shouldExchangeInLeft == -1 && shouldExchangeInRight != -1 && array[shouldExchangeInRight] == c){int moveEndIndex = rightestIndex + 1;MoveCharacterInArray(array, shouldExchangeInRight, moveEndIndex, c);rightestIndex = moveEndIndex;}}return new string(array);}private static void MoveCharacterInArray(char[] array, int startIndex, int endIndex, char endCharacter){if (startIndex == endIndex){return;}else if (startIndex < endIndex){for (int k = startIndex; k < endIndex; k++){array[k] = array[k + 1];}array[endIndex] = endCharacter;}else{for (int k = startIndex; k > endIndex; k--){array[k] = array[k - 1];}array[endIndex] = endCharacter;}}private static void ExchangeCharacterInArray(char[] array, int leftPosition, int rightPosition){char tmp = array[leftPosition];array[leftPosition] = array[rightPosition];array[rightPosition] = tmp;}

 

转载于:https://www.cnblogs.com/lgc19/archive/2013/01/24/2874624.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

麒麟芯片AI首席科学家,解读AI芯片如何让手机更智能

来源&#xff1a;华为摘要&#xff1a;8月31日&#xff0c;华为发布了新一代顶级人工智能手机芯片——麒麟980&#xff0c;成为全球首款采用7nm制程工艺的手机芯片。麒麟980能做到人脸识别、物体识别、物体检测、图像分割、智能翻译等&#xff0c;实现AI识别质的飞跃。今天&…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 17丨文章浏览 I【难度简单】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

协议森林14 逆袭 (CIDR与NAT)

作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei 严禁任何形式转载。 IPv4由于最初的设计原因&#xff0c;长度只有32位&#xff0c;所以只提供了大约40亿个地址。这造成了IPv4地址的耗尽危机。随后&#xff0c;IPv6被设计出来&#xff0c;并可以提供足够…

认知神经科学:美陆军高度关注的人工智能与生物科技的交叉学科领域

来源&#xff1a;天大神经工程近年来&#xff0c;随着“第三次抵消战略”的深入推进&#xff0c;美军重点部署人工智能、生物科技等前沿技术领域发展&#xff0c;寻求获取新的领先优势。作为人工智能与生物科技的交叉学科领域&#xff0c;认知神经科学具有颠覆未来作战样式的巨…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 17丨文章浏览 II【难度中等】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

Android之自定义属性

安卓自定义属性主要有3个步骤 在values文件夹新建attrs.xml文件中声明属性&#xff0c;包括属性名和格式&#xff0c;format常用属性有string ,integer,reference等 <?xml version"1.0" encoding"utf-8"?> <resources><!-- 声明属性集…

log4j的配置方法

一、 介绍 Log4j是Apache的一个开放源代码项目&#xff0c;通过使用Log4j&#xff0c;我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等&#xff1b;我们也可以控制每一条日志的输出格式&#xff1b;通…

中国智能制造发展趋势!

来源&#xff1a;中国电子信息产业发展研究院赛迪顾问认为&#xff0c;我国智能制造发展有三个趋势&#xff0c;即企业向系统方案解决供应商转型&#xff0c;生产更加柔性化、定制化&#xff0c;“互联网”促进价值链向价值网转变。一、智能制造装备企业逐步向系统方案解决供应…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 18丨即时食物配送 I【难度简单】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

感知哈希算法原理与实现

今天忽然想做一个图像识别的APP&#xff0c;但是在两张图片相似度的问题上产生了问题&#xff0c;感知哈希算法并不能解决这个问题&#xff0c;只是我在试着解决问题的过程中学到的一点知识。 这里的关键技术叫做”感知哈希算法”&#xff08;Perceptual hash algorithm&#…

Android开发中目前流行控件和知识点总结

1、SlidingMenu 滑动菜单 应用案例&#xff1a;Facebook 、 Path 2.0 、人人、网易新闻 下载地址&#xff1a; https://github.com/jfeinstein10/SlidingMenu 2、PullToRefresh 下拉刷新 应用案例&#xff1a;新浪微博 等等 &#xff0c;这个很长用哦&#xff01; 下载地址&…

李德毅:“反用驾驶脑”测认知能力,谁说酒驾一定违规?

来源&#xff1a;德先生摘要&#xff1a;从2016年阿尔法狗成功挑战人类智慧的这场世纪大战开始&#xff0c;“人工智能”便引发了全世界的关注。从2016年阿尔法狗成功挑战人类智慧的这场世纪大战开始&#xff0c;“人工智能”便引发了全世界的关注。为了让中国在人工智能这场“…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 18丨即时食物配送 II【难度中等】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

[zz]4.1.5 进程的处理器亲和性和vCPU的绑定

转载自&#xff1a;http://smilejay.com/2012/08/kvm-vcpu-binding/ 通常情况下&#xff0c;在SMP系统中&#xff0c;Linux内核的进程调度器根据自有的调度策略将系统中的一个进程调度到某个CPU上执行。一个进程在前一个执行时间 是在cpuM&#xff08;M为系统中的某CPU的ID&…

谷歌无人车十年记:理想背后的骨感现实 | 厚势汽车

来源&#xff1a;The Information编译&#xff1a;厚势摘要&#xff1a;即使是近 10 年后&#xff0c;Waymo 仍远没有实现真正的 L4&#xff0c;即使是在相对简单的郊区环境下。「全自动驾驶的汽车来了&#xff01;」去年 11 月&#xff0c;Waymo 搞了一个大新闻。公司宣布自己…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 19丨行转列【难度中等】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

自定义控件之瀑布流与水波纹实现

本文主要讲述了利用android自定义控件实现瀑布流与水波纹效果 首先为实现效果&#xff0c;应了解touch事件在android中的传递机制 在执行touch事件时 首先执行dispatchTouchEvent方法&#xff0c;执行事件分发。 再执行onInterceptTouchEvent方法&#xff0c;判断是否中断事件…

医学信息学相关术语、缩语及专业名词

医学信息学相关术语、缩语及专业名词 很棒哦&#xff0c;分享了&#xff0c;需要的可以去瞅瞅http://www.med-informatics.cn/MedInfo_gloss/medinfo_gloss_p1.htm如果你到它的完整上再逛逛&#xff0c;发觉还有很多好资源&#xff0c;譬如&#xff1a;http://www.med-informat…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 19丨最后一个能进入电梯的人【难度中等】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

神经网络并不是尚方宝剑,我们需要正视深度 NLP 模型的泛化问题

来源&#xff1a;AI 科技评论前段时间的文章《顶会见闻系列&#xff1a;ACL 2018&#xff0c;在更具挑战的环境下理解数据表征及方法评价》中&#xff0c;我们介绍了 ACL 大会上展现出的 NLP 领域的最新研究风向和值得关注的新进展。从这些新动向上我们似乎应该对深度学习 NLP …