c - 剥离非数字字符串元素

标签 c arrays string algorithm

我有一个具有如下结构的字符串数组:

    arr[0] = "AB82374892";  
    arr[1] = "QBA9980309";
    arr[2] = "AC00098320";        

等等。

如何从每个数组元素中删除每个非数字字符串元素?这样上面的数组就变成了:

    arr[0] = "82374892";
    arr[1] = "9980309";
    arr[2] = "00098320";

目标是获取纯数字字符串,以便高效地执行字典级别排序。

最佳答案

对于每个字符串,使用两个指针 - writer 和 reader。

  • 使用数组上的读取器指针进行迭代 - 如果元素不是数字,则仅增加它。
  • 如果元素是数字 - 写入它并增加两个指针。

伪代码:

writer = reader = 0
while reader < n:
   if arr[reader] is numeric:
      arr[writer++] = arr[reader++]
   else:
      reader++

(不要忘记为每个字符串添加空终止符)

关于c - 剥离非数字字符串元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19877172/

相关文章:

arrays - Ruby 中的有序数组连接

string - Swift 可以打印 AnyObject,但不能从 AnyObject 创建字符串

c# - 为什么 String 是 Value 类型,虽然它是一个类而不是一个结构?

c++ - C++ 中的 HashMap (int, string[])

javascript - 遍历对象数组,检查匹配参数并将匹配对象添加到新数组

c# - 获取 C# 字符串中字符的 ASCII 值

c - 为什么我的链表打印倒着?

c++ - 在编码中分配 Helm 机很困难

c - 羊群(): removing locked file without race condition?

javascript - 通过分解寻找完美立方体的程序