String 如何从字符串中的给定区域删除重复字符?(假设我们有从中读取字符串的缓冲区)
我目前正在做,我在学习第一年的编程作业。我们被赋予变量var buffer、marker、cursor、paste,我们的任务是读取缓冲区的某个区域,并在该区域中删除任何重复字符,然后再次将该区域粘贴到缓冲区中,以便对其进行更新。 请记住,我正在对我的程序执行测试(J-Unit),并根据通过测试的次数获得适当的分数。此函数当前未通过任何测试。代码如下:String 如何从字符串中的给定区域删除重复字符?(假设我们有从中读取字符串的缓冲区),string,scala,duplicates,String,Scala,Duplicates,我目前正在做,我在学习第一年的编程作业。我们被赋予变量var buffer、marker、cursor、paste,我们的任务是读取缓冲区的某个区域,并在该区域中删除任何重复字符,然后再次将该区域粘贴到缓冲区中,以便对其进行更新。 请记住,我正在对我的程序执行测试(J-Unit),并根据通过测试的次数获得适当的分数。此函数当前未通过任何测试。代码如下: **class** Buffer(s: String) { import scala.collection.mutable.StringB
**class** Buffer(s: String) {
import scala.collection.mutable.StringBuilder
private var buffer: StringBuilder = new StringBuilder(s)
private var cursor: Int = 0 private var marker: Int = 0
private var paste: String = ""
private def end: Int = buffer.length
private def lwr: Int = Math.min(marker, cursor)
private def upr: Int = Math.max(marker, cursor)
def dd() {
var MarkerToCursor = ""
var CursorToMarker = ""
var x = ""
var y = ""
//function whcih higlists a certain and then given that reads in characters of the buffer
if(marker < cursor ){
for(x <- marker until cursor)
MarkerToCursor = MarkerToCursor + buffer.charAt(x)
MarkerToCursor.toString
x = MarkerToCursor.distinct
//inserting the highlated area with the string into the buffer and updating it
buffer = new StringBuilder(getString.substring(0, marker) + y+ getString.substring(cursor, end))
cursor = marker + x.length
}
else{
// the same function as the one above except the region consists of charcyters from marker up to cursor.Eveyrything else is the same
for(x <- cursor until marker)
CursorToMarker = CursorToMarker + buffer.charAt(x)
CursorToMarker.toString
y = CursorToMarker.distinct
buffer = new StringBuilder(getString.substring(0, cursor) +y + getString.substring(marker, end))
marker = cursor + y.length }
}
}
}
**类**缓冲区(s:字符串){
导入scala.collection.mutable.StringBuilder
私有变量缓冲区:StringBuilder=新StringBuilder
私有变量游标:Int=0私有变量标记:Int=0
私有变量粘贴:String=“”
私有def end:Int=buffer.length
私有def lwr:Int=Math.min(标记、光标)
私有def upr:Int=Math.max(标记、光标)
def dd(){
var MarkerToCursor=“”
var CursorToMarker=“”
var x=“”
var y=“”
//函数whcih列出一个特定的,然后给定的,读取缓冲区字符
如果(标记<光标){
对于(x,正如@Dima在评论中所说的,其逻辑很简单
def removeDuplicatesInRange(str: String, start: Int, end: Int): String =
str.take(start) + str.slice(start, end).distinct + str.drop(end)
请注意,这将从旧字符串创建一个新字符串,而不是使用var
或就地更新数据。避免这样的可变数据是函数式编程的关键元素之一,这是Scala语言的主要焦点。input.drop(from)+input.substring(from,to).distinct+input.drop(to)
getString与方法子字符串(x,y)相结合,得到两个变量(x,y)之间的字符串(读入字符串是缓冲区的一部分)。这就是您想知道的吗?顺便说一句,它在我的程序中编译,尽管我发布的东西是更大程序的一部分,所以这就是问题所在。