# 字符串简介

# 为何单独讨论字符串类型

# 1. 字符串的基本操作对象通常是字符串整体或者其子串

例如有这样一个字符串序列:I like leetcode 现在我们想把这句话反向输出,他的结果应该是 Leetcode like I 而不是 edocteel ekil I。这里的每个单词就叫做字符串的「子串」,通常,我们的操作对象更多情况下是这些子串。

# 2. 字符串操作比其他数据类型更复杂(例如比较、连接操作)

在 js 中可能比其他语言简单一些

对于不同的编程语言,字符串的某些操作会有所不同。下面我们将从字符串的「比较」和「连接」操作两个方面分别进行讲解。

# 比较函数

在 js 中,我们使用全等比较来判断两个字符串是否相等

'abc' === 'abc'; // true
'abc' === 'ab'; // false
'abc' == 'abc'; // true
'abc' == 'ab'; // false

# 连接操作

在 js 中,连接/拼接字符串使用 + 操作符

'a' + 'b'; // 'ab'

# 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串  ""。
示例  1:
输入: ["flower","flow","flight"]
输出: "fl"
示例  2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母  a-z 。

var longestCommonPrefix = function(strs) {
  // 方法一:纵向对比
  var str = '';
  var index = 0;
  var done = false;
  if (strs[0] && strs[0][0]) {
    while (strs[0][index] && !done) {
      for (var i = 0; i < strs.length; i++) {
        if (i > 0 && strs[i][index] !== strs[i - 1][index]) {
          done = true;
          break;
        }
      }
      if (!done) {
        str += strs[0][index];
        index++;
      }
    }
    return str;
  } else {
    return str;
  }
};

作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/array-and-string/c9lnm/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。