题目考察的知识点:字符串的遍历

题目解答方法的文字分析:先将相邻的"//"删掉一个;然后入栈,遇到"."出栈;然后栈中的元素就是最简路径,入string中,翻转字符串。

本题解析所用的编程语言:c++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param path string字符串 
     * @return string字符串
     */
string find_dangerous_cow_path(string path)
{
    // write code here
    //将相邻的"//"删掉一个
    auto it = path.begin();
    while (it != path.end() - 1)
    {
        if ((*it) == '/' && *(it + 1) == '/')
            path.erase(it + 1);
        ++it;
    }
    //入栈
    stack<char> ret;
    for (int i = 0; i < path.size(); ++i)
    {
        if (path[i] == '.')
        {
            while (!ret.empty() && ret.top() != '/')
            {
                ret.pop();
            }
            if (!ret.empty())
                ret.pop();
        }
        else
            ret.push(path[i]);
    }
    //入string
    string rpath;
    while (!ret.empty())
    {
        rpath += ret.top();
        ret.pop();
    }
    //翻转
    reverse(rpath.begin(), rpath.end());
    if (rpath.size() > 1 && rpath[rpath.size() - 1] == '/')
        rpath.erase(rpath.end() - 1);

    return rpath;
}
};