Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何从字符串中的给定区域删除重复字符?(假设我们有从中读取字符串的缓冲区)_String_Scala_Duplicates - Fatal编程技术网

String 如何从字符串中的给定区域删除重复字符?(假设我们有从中读取字符串的缓冲区)

String 如何从字符串中的给定区域删除重复字符?(假设我们有从中读取字符串的缓冲区),string,scala,duplicates,String,Scala,Duplicates,我目前正在做,我在学习第一年的编程作业。我们被赋予变量var buffer、marker、cursor、paste,我们的任务是读取缓冲区的某个区域,并在该区域中删除任何重复字符,然后再次将该区域粘贴到缓冲区中,以便对其进行更新。 请记住,我正在对我的程序执行测试(J-Unit),并根据通过测试的次数获得适当的分数。此函数当前未通过任何测试。代码如下: **class** Buffer(s: String) { import scala.collection.mutable.StringB

我目前正在做,我在学习第一年的编程作业。我们被赋予变量var buffer、marker、cursor、paste,我们的任务是读取缓冲区的某个区域,并在该区域中删除任何重复字符,然后再次将该区域粘贴到缓冲区中,以便对其进行更新。 请记住,我正在对我的程序执行测试(J-Unit),并根据通过测试的次数获得适当的分数。此函数当前未通过任何测试。代码如下:

**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)之间的字符串(读入字符串是缓冲区的一部分)。这就是您想知道的吗?顺便说一句,它在我的程序中编译,尽管我发布的东西是更大程序的一部分,所以这就是问题所在。