题解 | #第一个只出现一次的字符#

使用的是双指针遍历的方法,先看慢指针前面的字符是否有与它相等的,固定慢指针,移动快指针,如果有,就让慢指针+1,重新遍历,如果没有,就看慢指针后面的内容是否有与它相同的,固定此时的慢指针,重新定义一个指针,让它从头开始遍历,看它走到慢指针前,是否有与慢指针相同的,如果有就让慢指针+1,重新遍历,如果没有,说明这个字符就是我们要找到字符。如果慢指针都遍历完了,也没有找到,说明该字符串没有符合要求的字符,return -1。

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param str string字符串
 * @return int整型
 */
int FirstNotRepeatingChar(char* str) {
    // write code here
    //如果开头就是\0,就直接返回-1
    if ((*str) == '\0') {
        return -1;
    }
    //如果不是
    char* slow = str;
    char* fast = str + 1;
    //遍历慢指针
    while (*slow)
    {
        //遍历快指针
        fast = slow + 1;
        while (*fast != '\0' && *slow != *fast) {
            fast++;
        }
        //出循环之后,要么两者相等,要么快指针走完了
        //如果两者相等
        if (*slow == *fast)
        {
            //慢指针往后走,并且重新进入循环
            slow++;
            continue;
        }
        //如果快指针走完了
        //说明慢指针前面没有与它相等的,就看后面有没有和它相等的
        char* p = str;
        //如果慢指针是头元素,说明后面就没有与它相等的了
        if (slow == str)
        {
            //返回数组下标
            return slow - str;
        }
        //如果不是头元素,就看与后面的是否与它有相等的
        while (*p != *slow)
        {
            p++;
        }
        //如果是它本身,就说明后面没有与它相等的了
        if (p == slow)
        {
            return slow - str;
        }
        //如果不是,则就说明后面有与它相等的
        //则不是这个下标,,慢指针往后走,并且继续执行大循环
        slow++;
        continue;
    }
    //走到这里,说明都不符合
    return -1;
}
全部评论

相关推荐

HTTP劫持(HTTP Hijacking)是指攻击者在通信过程中拦截和篡改用户的HTTP请求或响应,从而实施恶意操作或窃取用户的敏感信息。HTTP劫持可能发生在网络中的任何节点,攻击者可以截获用户发送的请求,修改请求内容,或截获服务器返回的响应,篡改响应内容。为了防范HTTP劫持攻击,可以采取以下措施:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=bb7c8339fae245258616366baf13e19e使用HTTPS协议:通过使用HTTPS来进行通信,可以确保通信过程中的数据加密,防止拦截者对数据的篡改。使用可信赖的SSL/TLS证书,以保证通信的安全性。加密敏感信息:对于传输过程中的敏感信息,如登录凭据、个人身份信息等,应该进行加密处理,确保即使被拦截,攻击者无法获取到真正的敏感数据。安全的认证授权机制:使用安全且可靠的认证和授权机制,如使用JWT(JSON Web Token)来验证请求的合法性,并确保只有授权用户才能执行敏感操作。客户端安全性:保持客户端应用程序的安全性,防止恶意软件或插件通过植入恶意代码进行HTTP劫持攻击。安全头部设置:使用相关的安全头部,如X-Content-Type-Options、X-Frame-Options、Content-Security-Policy等,适当限制网页内容的加载和嵌入方式,减少劫持的风险。定期更新和维护:及时更新和修复应用程序的漏洞和安全问题,以提高应用程序的安全性。教育用户:提高用户的安全意识,教育用户不要轻信可疑的链接或提供个人敏感信息,从而降低受到HTTP劫持攻击的风险。
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务