转机来了,拜登政府正考虑让TikTok在美国继续运营

3,647 阅读4分钟

TikTok

距离 TikTok(下称为 tt)被封禁的日期(1-19)还有几天,目前有了一些新的进展,问了在 tt 的朋友,内部口风已经从高风险转为低风险。

这意味着 tt 最终被封禁的可能性在急速下降。

距离我们此前聊到 tt,最近新发生了几件事:

  1. 美国当选总统特朗普正在考虑在上任后发布一项行政命令,暂停执行 tt 销售或禁止法 60 至 90 天
  2. tt 宣布,最高法院介入阻止禁令,否则计划于周日(1-19)全面关闭其在美国的应用
  3. 拜登政府正考虑如何让 tt 在美国继续运营

第 3 点是「tt 被封禁可能性急速下降」的主要原因,而第 3 点的出现,更多是因为第 2 点。

老美的政府就是这么摇摆不定。

这不禁让我想起来,当年的 Android 禁用事件,一度说要禁止我们使用 Android,但一旦我们做好了割舍的准备(宣布有了自研系统可替代),对方又说不禁了。

此前所说的 tt 封禁,只粗浅地禁止 tt 在各大应用上架(默许了存量用户可以继续使用)。结果现在 tt 直接宣布,如果禁令不取消,将会在禁令日关停美区服务器。一下子就把所有的 TikTok Shop 的商户和众多内容创作者的命运和禁令捆绑在一起。如果 tt 真的直接关停服务器,保守估计会导致数十亿美元的损失,同时对拜登政府的舆论指向也会被急速放大,这显然不是一件能让拜登政府坐得住的事件。

个人猜测,48 小时内,我们将会听到关于「禁令冻结 or 延迟」这样的好消息,拭目以待。

...

回归主题。

周四,来一道简单题。

题目描述

平台:LeetCode

题号:1021

有效括号字符串为空 """(" + A + ")" 或 A + B ,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。

例如,"""()""(())()" 和 "(()(()))" 都是有效的括号字符串。

如果有效字符串 s 非空,且不存在将其拆分为 s = A + B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。

给出一个非空有效字符串 s,考虑将其进行原语化分解,使得:s = P_1 + P_2 + ... + P_k,其中 P_i 是有效括号字符串原语。

s 进行原语化分解,删除分解中每个原语字符串的最外层括号,返回 s

示例 1:

输入:s = "(()())(())"

输出:"()()()"

解释:
输入字符串为 "(()())(())",原语化分解得到 "(()())" + "(())",
删除每个部分中的最外层括号后得到 "()()" + "()" = "()()()"。

示例 2:

输入:s = "(()())(())(()(()))"

输出:"()()()()(())"

解释:
输入字符串为 "(()())(())(()(()))",原语化分解得到 "(()())" + "(())" + "(()(()))",
删除每个部分中的最外层括号后得到 "()()" + "()" + "()(())" = "()()()()(())"。

示例 3:

输入:s = "()()"

输出:""

解释:
输入字符串为 "()()",原语化分解得到 "()" + "()",
删除每个部分中的最外层括号后得到 "" + "" = ""

提示:

  • 1<=s.length<=1051 <= s.length <= 10^5
  • s[i]'('')'
  • s 是一个有效括号字符串

双指针

和其他「有效括号」问题一样,我们将 ( 记为 11 分,将 ) 记为 1-1

由于 s 本身为有效字符串,因此我们可以从前往后进行处理,每一次找到符合 socre=0socre = 0 的连续段 [i,j)[i, j),然后再结合题意,删掉外层括号,即将 [i+1,j1)[i + 1, j - 1) 加入答案。

Java 代码:

class Solution {
    public String removeOuterParentheses(String s) {
        char[] cs = s.toCharArray();
        int n = cs.length;
        StringBuilder sb = new StringBuilder();
        for (int i = 0, score = 0; i < n; score = 0) {
            int j = i;
            while (i == j || score != 0) score += cs[j++] == '(' ? 1 : -1;
            sb.append(s.substring(i + 1, j - 1));
            i = j;
        }
        return sb.toString();
    }
}

C++ 代码:

class Solution {
public:
    string removeOuterParentheses(string s) {
        string ans;
        for (int i = 0, score = 0; i < s.size(); score = 0) {
           int j = i;
            while (i == j || score != 0) score += (s[j++] == '(') ? 1 : -1;
            ans += s.substr(i + 1, j - i - 2);
            i = j;
        }
        return ans;
    }
};

Python 代码:

class Solution:
    def removeOuterParentheses(self, s: str) -> str:
        ans = ""
        n, i = len(s), 0
        while i < n:
            j, score = i, 0
            while i == j or score != 0:
                score += 1 if s[j] == '(' else -1
                j += 1
            ans += s[i + 1: j - 1]
            i = j
        return ans

TypeScript 代码:

function removeOuterParentheses(s: string): string {
    const n = s.length;
    let ans = "";
    for (let i = 0, score = 0; i < n; score = 0) {
        let j = i;
        while (j == i || score !== 0) score += s[j++] === '(' ? 1 : -1;
        ans += s.substring(i + 1, j - 1);
        i = j;
    }
    return ans;
};
  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(1)O(1)