【PAT_1046】 Sharing (25)

題目描述:


找到word1和word2的公共后綴的起始位置

輸入

第一行 地址一adress1(word1的起始地址),地址二(word2的起始地址),正整數(shù)(節(jié)點總數(shù))。其中節(jié)點的地址是5位正整數(shù),NULL由-1表示。
然后是N行,每行描述一個格式的節(jié)點:
Address Data Next
其中Address是節(jié)點的位置,Data是該節(jié)點包含的字母,它是從{a-z,A-Z}中選擇的英文字母,Next是下一個節(jié)點的位置。

輸出

輸出公共后綴的起始位置。

解題思路

word1和word2的公共后綴的長度相同,所以從word1和word2長度相同的位置開始比較。先獲得word1和word2的長度len1和len2,假設word1較word2長,先找到word1的第len2-len1個節(jié)點,是的word1余下長度與word2相同,然后逐一比較word1和word2的各節(jié)點的下一個地址是否相等,相同即返回。

代碼

#include<stdio.h>
#include<iostream>
#include<string>
#include<vector>
using namespace std;

struct node {

    char val;
    int next;
}nodes[100000];
int main() {
    int chain1, chain2, n;
    int adress, next;
    char val;
    cin >> chain1 >> chain2 >> n;
    for (int i = 0; i < n; i++) {
        cin >> adress;
        cin >> val;
        cin >> next;

        nodes[adress].val = val;
        nodes[adress].next = next;
    }
    //int  chain1,j
    bool flag = true;
    int c2=chain2,c1 = chain1;
    int len1=1,len2=1;
    while(nodes[c2].next != -1){
        c2 = nodes[c2].next;
        len2++;
    }
    while(nodes[c1].next != -1){
        c1 = nodes[c1].next;
        len1++;
    }
    while(len1>len2){
         chain1 = nodes[chain1].next;
         len1--;
    }
    while(len1<len2){
         chain2 = nodes[chain2].next;
         len2--;
    }
    while(nodes[chain1].next != -1&&nodes[chain2].next != -1 ){

        //cout<<chain1<<","<<chain2<<endl;
        if (chain1 == chain2) {
            cout.fill('0');
            cout.width(5);
            cout << chain1 << endl;
            flag = false;
            break;
        }

       chain2 = nodes[chain2].next;
        chain1 = nodes[chain1].next;
    }
    if(flag)
        cout<<"-1"<<endl;


    return 0;
}



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,338評論 0 10
  • 孩子,我知道你很疼。 昨天帶孩子到她三姨家,我們姐妹仨在廚房準備菜品。 ...
    我是二掌柜閱讀 252評論 0 0
  • 剛結(jié)束一段感情,我為之傾盡心血,可是到頭來卻一切都付諸東流,回想這段感情,我盡力了。 一直以來,我們都相處的很融洽...
    森森12599閱讀 561評論 2 2
  • ? 請點擊此處輸入圖片描述 電影是一個風險性很高的生意,但是風險是可以通過技術(shù)和經(jīng)驗等預判和管控的。當然還存在偶然...
    怪獸電影院閱讀 265評論 0 0

友情鏈接更多精彩內(nèi)容