交换*号到第一位的partition算法和不改变数字位置的算法 scala版本
来源:互联网 发布:mac 查杀进程 编辑:程序博客网 时间:2024/06/05 11:54
下面算法想法来自七月算法上的视频:http://www.julyedu.com/video/play/id/28
交换*号到第一位的partition算法:
case class SortNum[T](str: String) {//因为字符串在scala里面是常量,一旦改变会生成一个新的字符串而不是在原本上更新,所以需要构建一个映射的数组var strArray = str.toBuffer//交换函数def swap(num1: Int, num2: Int){val temp = str(num1)strArray(num1) = strArray(num2)strArray(num2) = temp}//初始化参数val n = str.lengthvar j = 0var i = 0//循环def sort:String = {for (j <- 0 until n) {if (str(j).toString == "*") {swap(i, j)i += 1}}strArray.mkString}}object SortNum {
implicit def strs[T](str: String):SortNum[T] = SortNum(str) //> strs: [T](str: String)SortNum[T]val abc = "*12*23*34" //> abc : String = *12*23*34abc.sort //> res0: String = ***123234}
不改变数字位置的算法:
case class SortNum[T](str: String) {//因为字符串在scala里面是常量,一旦改变会生成一个新的字符串而不是在原本上更新,所以需要构建一个映射的数组var strArray = str.toBuffer//使用填充的方法def fill(i: Int, x: Int) {strArray(i) = str(x)}//初始化参数val n = str.lengthvar i = 0var j = n -1//从尾部开始扫描,扫描到非*的填充到尾部,扫描到*号填充到开头def sort:String = {for (x <- (0 until n) reverse) {if (str(x).toString != "*") {fill(j,x)j = j-1} else {fill(i,x)i +=1}}strArray.mkString}}object SortNum {implicit def strs[T](str: String):SortNum[T] = SortNum(str) //> strs: [T](str: String)SortNum[T]val abc = "*12*23*34" //> abc : String = *12*23*34abc.sort //> res0: String = ***122334}
0 0
- 交换*号到第一位的partition算法和不改变数字位置的算法 scala版本
- 求出32位整数左边第一位是1的算法
- 求出32位整数左边第一位是1的算法
- 不包含重复数字的抽样算法
- partition算法思想的应用
- 被忽视的 partition 算法
- 交换算法的实现
- scala里面的partition
- scala版本的梅森旋转随机数算法
- 《算法竞赛入门经典》-不借助第三个变量交换a和b的值
- 不使用临时变量的变量交换算法
- 两个整形数交换的算法,不使用其它变量
- 算法学习——不交换的选择排序
- 字符串处理算法(三)按指定位置交换字符串两部分的位置
- 取消重复数字后的最大数,不改变在原串中的相对位置
- 从hash算法到scrypt算法的不可逆加密算法
- 不重复随机数列生成算法2-数组有效位置的最后一个元素移动到当前位置
- 交换两个数的算法
- day13/StringDemo.java
- WorkPlanning_7
- 栈 函数的实现
- day13/StringMethodDemo.java
- 提高第18课时,实践4,扑克牌
- 交换*号到第一位的partition算法和不改变数字位置的算法 scala版本
- android studio慢慢熟悉-好用的 设置 查找框
- 彻底分析block中的循环引用
- UVA LA3890 二分和半平面交
- python中出现的expected an indented block错误代码解析
- CSU1614:First Blood
- 剑指offer 替换空格 java实现
- Leecode记录——Valid Palindrome
- day14/ArrayListTest2.java