StringBuilder方法的使用-创新互联

这篇文章给大家分享的是StringBuilder的使用方法,相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,话不多说,一起往下看吧。

网站制作、成都网站设计,成都做网站公司-创新互联已向1000多家企业提供了,网站设计,网站制作,网络营销等服务!设计与技术结合,多年网站推广经验,合理的价格为您打造企业品质网站。

题目

LeetCode第20题,这题比较简单,匹配括号.
StringBuilder方法的使用

这是栈的典型应用,括号匹配,当然不需要直接使用栈,使用一个StringBuilder即可:

if(s.isEmpty())
  return true;
char a = s.charAt(0);
if (a != '(' && a != '[' && a != '{')
   return false;
StringBuilder t = new StringBuilder();
int len = -1;
for(char c:s.toCharArray())
{
   if(c == '(' || c == '[' || c == '{')
   {
     t.append(c);
     ++len;
   }
   else
   {
     if(len == -1)
       return false;
     char cc = t.charAt(len);
     if(
       (c == ')' && cc != '(')
       ||
       (c == ']' && cc != '[')
       ||
       (c == '}' && cc != '{')
     )
       return false;
     t.deleteCharAt(len--);
   }
}
return len == -1;

首先判断是否为空,再判断第一个字符,然后进入逐个循环判断,若表示左边的括号则append,若表示右边的括号首先判断len,然后取出len处字符进行判断是否匹配,不匹配直接返回false,匹配的话则删除这个字符.最后根据len是否为-1返回最终结果.
StringBuilder方法的使用

优化

其实就是简化一下代码,直接开辟一个大的空间,不需要进行append与delete,只需移动栈顶指针.栈顶指针从1开始,若从0开始的话对于"]"这种情况会报下标越界错误,压栈就是++p,压入字符,出栈直接- - p,然后判断是否匹配即可.

char[] t = new char[s.length() + 1];
int p = 1;
for (char c : s.toCharArray()) 
{
   if (c == '(' || c == '[' || c == '{')
     t[p++] = c;
   else 
   {
     --p;
     if ((c == ')' && t[p] != '(') || (c == ']' && t[p] != '[') || (c == '}' && t[p] != '{'))
       return false;
   }
}
return p == 1;

StringBuilder方法的使用

上文描述的就是StringBuilder方法的使用示范 ,具体使用情况还需要大家自己动手实验使用过才能领会。如果想了解更多相关内容,欢迎关注创新互联行业资讯频道!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:StringBuilder方法的使用-创新互联
地址分享:http://cdiso.cn/article/iseco.html

其他资讯